From e91cac89ffb02592f9522b5d07a0d8708afdf3be Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 19 Oct 2021 14:20:16 -0700 Subject: [PATCH 001/372] Add union for zoned IPv[46] addresses. * (M) types/openconfig-types.yang - Add a zoned IPv[46] union type to the general openconfig-types module. --- .../models/types/openconfig-inet-types.yang | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 40ffd16f8..899e82d32 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -31,7 +31,14 @@ module openconfig-inet-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.5.0"; + + revision "2021-08-17" { + description + "Add ip-address-zoned typedef as a union between ipv4-address-zoned + and ipv6-address-zoned types."; + reference "0.5.0"; + } revision "2021-07-14" { description @@ -273,6 +280,16 @@ module openconfig-inet-types { "An IPv4 or IPv6 address with no prefix specified."; } + typedef ip-address-zoned { + type union { + type ipv4-address-zoned; + type ipv6-address-zoned; + } + description + "An IPv4 or IPv6 address with no prefix specified and an optional + zone index."; + } + typedef ip-prefix { type union { type ipv4-prefix; From d1a61e847be249f12f6d4328d965a1a625962437 Mon Sep 17 00:00:00 2001 From: Dipen Patel Date: Wed, 10 Nov 2021 14:00:20 -0800 Subject: [PATCH 002/372] Update WiFi models for WiFi 6 support. (#1021) * (M) release/models/wifi/openconfig-access-points.yang * (M) release/models/wifi/openconfig-ap-interfaces.yang * (M) release/models/wifi/openconfig-ap-manager.yang * (M) release/models/wifi/openconfig-wifi-mac.yang * (M) release/models/wifi/openconfig-wifi-phy.yang * (M) release/models/wifi/openconfig-wifi-types.yang - Update WiFi models to add WiFi 6 support. --- .../models/wifi/openconfig-access-points.yang | 8 ++++- .../models/wifi/openconfig-ap-interfaces.yang | 8 ++++- .../models/wifi/openconfig-ap-manager.yang | 8 ++++- release/models/wifi/openconfig-wifi-mac.yang | 36 ++++++++++++++++++- release/models/wifi/openconfig-wifi-phy.yang | 32 +++++++++++++++-- .../models/wifi/openconfig-wifi-types.yang | 15 ++++++-- 6 files changed, 99 insertions(+), 8 deletions(-) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index 539bea63d..1b60fd1ac 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,13 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2021-08-02" { + description + "Update model version as it is in production."; + reference "1.0.0"; + } revision "2020-04-28" { description diff --git a/release/models/wifi/openconfig-ap-interfaces.yang b/release/models/wifi/openconfig-ap-interfaces.yang index e162ca62d..e0603af2d 100644 --- a/release/models/wifi/openconfig-ap-interfaces.yang +++ b/release/models/wifi/openconfig-ap-interfaces.yang @@ -32,7 +32,13 @@ module openconfig-ap-interfaces { "This module defines the configuration and state data for non-radio interfaces on WiFi Access Points."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "1.0.0"; + + revision "2021-08-02" { + description + "Update model version as it is in production."; + reference "1.0.0"; + } revision "2020-03-24" { description diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index 28d89acb0..ed5303da5 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -25,7 +25,13 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "0.1.3"; + oc-ext:openconfig-version "1.0.0"; + + revision "2021-08-02" { + description + "Update model version as it is in production."; + reference "1.0.0"; + } revision "2020-06-30" { description diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index b12667e85..236ca46a5 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,13 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "1.0.0"; + + revision "2021-08-02" { + description + "Update tx/rx MCS rates, add AX as client connection mode."; + reference "1.0.0"; + } revision "2020-03-24" { description @@ -766,6 +772,18 @@ module openconfig-wifi-mac { description "Rx Data frames at MCS 9."; } + + leaf mcs10 { + type oc-yang:counter64; + description + "Rx Data frames at MCS 10."; + } + + leaf mcs11 { + type oc-yang:counter64; + description + "Rx Data frames at MCS 11."; + } } leaf rx-retries { @@ -1026,6 +1044,18 @@ module openconfig-wifi-mac { description "Tx Data frames at MCS 9."; } + + leaf mcs10 { + type oc-yang:counter64; + description + "Tx Data frames at MCS 10."; + } + + leaf mcs11 { + type oc-yang:counter64; + description + "Tx Data frames at MCS 11."; + } } leaf tx-retries { @@ -1287,6 +1317,10 @@ module openconfig-wifi-mac { description "Client connected using 802.11ac."; } + enum AX { + description + "Client connected using 802.11ax."; + } } description "802.11 protocol used for the client's connection."; diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 96681cbb4..fc8d525bc 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "1.0.0"; + + revision "2021-08-02" { + description + "Add BSS color to radio config and neighbor table."; + reference "1.0.0"; + } revision "2020-03-24" { description @@ -132,6 +138,21 @@ module openconfig-wifi-phy { "Operating channel-width of this radio."; } + leaf bss-coloring { + type boolean; + default "true"; + description + "Utilize BSS coloring on this radio."; + } + + leaf bss-color-id { + type uint8 { + range "1..63"; + } + description + "Numerical identifier of the BSS."; + } + leaf dca { type boolean; default "true"; @@ -324,7 +345,6 @@ module openconfig-wifi-phy { } } - // neighbor BSSID | SSID | RSSI | Channel | Center Channel | Last-seen grouping neighbor-list-state { description "Operational state data relating to neighboring @@ -363,6 +383,14 @@ module openconfig-wifi-phy { bonded channel."; } + leaf bss-color-id { + type uint8 { + range "1..63"; + } + description + "Numerical identifier of the BSS."; + } + leaf last-seen { type oc-types:timeticks64; units nanoseconds; diff --git a/release/models/wifi/openconfig-wifi-types.yang b/release/models/wifi/openconfig-wifi-types.yang index cb58885f7..859ed38ae 100644 --- a/release/models/wifi/openconfig-wifi-types.yang +++ b/release/models/wifi/openconfig-wifi-types.yang @@ -22,7 +22,13 @@ module openconfig-wifi-types { that are used in the openconfig-wifi modules. It can be imported by any module to make use of these types."; - oc-ext:openconfig-version "0.1.2"; + oc-ext:openconfig-version "1.0.0"; + + revision "2021-08-02" { + description + "Add OFDMA in client capabilities."; + reference "1.0.0"; + } revision "2020-05-19" { description @@ -253,11 +259,16 @@ module openconfig-wifi-types { description "Whether this STA can MU-MIMO Beamform."; } - identity MU_BEAMFORMEE { + identity MU_BEAMFORMEE { base CLIENT_CAPABILITIES; description "Whether this STA can Rx MU-MIMO Beamformed frames."; } + identity OFDMA { + base CLIENT_CAPABILITIES; + description "Whether this STA can use OFDMA."; + } + identity DOT_11R { base CLIENT_CAPABILITIES; description From cf4075890eec4d5e38e07019e748cd633d31a3fa Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 16 Nov 2021 11:55:42 -0800 Subject: [PATCH 003/372] Remove obsolete build rule for BFD+NI. (#1056) * (M) yang/bfd/.spec.yml - Remove build rule that was intended to test augmentations to NI from BFD model that have since been removed. --- release/models/bfd/.spec.yml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/release/models/bfd/.spec.yml b/release/models/bfd/.spec.yml index 623e6b5c5..44ad51b24 100644 --- a/release/models/bfd/.spec.yml +++ b/release/models/bfd/.spec.yml @@ -4,8 +4,3 @@ build: - yang/bfd/openconfig-bfd.yang run-ci: true -- name: openconfig-bfd-ni - build: - - yang/bfd/openconfig-bfd.yang - - yang/network-instance/openconfig-network-instance.yang - run-ci: true From eabe9951115ddfe310b4913fc429a92732645976 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 16 Nov 2021 15:38:12 -0800 Subject: [PATCH 004/372] Removal of top-level /bgp container (#1053) * (M) yang/bgp/openconfig-bgp.yang - Remove top-level /bgp container as it has been re-rooted under network-instance protocols for a number of major releases Co-authored-by: Ebben Aries --- release/models/bgp/openconfig-bgp.yang | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 60bd7759d..4b8407de1 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -60,7 +60,13 @@ module openconfig-bgp { +-> [ optional pointer to peer-group ] +-> AFI / SAFI [ per-AFI overrides ]"; - oc-ext:openconfig-version "6.1.1"; + oc-ext:openconfig-version "7.0.0"; + + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } revision "2021-06-16" { description @@ -195,6 +201,4 @@ module openconfig-bgp { } } - uses bgp-top; - } From 774e8a81e40cbefb2a0551db0abeea435f660453 Mon Sep 17 00:00:00 2001 From: samier barguil Date: Wed, 1 Dec 2021 10:03:25 +0100 Subject: [PATCH 005/372] Update the qualification prefix for OSPF module - 1003 (#1014) * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/ospf/openconfig-ospfv2.yang * (M) release/models/ospf/openconfig-ospfv2-lsdb.yang - Add module prefix qualifications to when statements. --- .../openconfig-network-instance.yang | 23 +++-- .../models/ospf/openconfig-ospfv2-lsdb.yang | 86 ++++++++++--------- release/models/ospf/openconfig-ospfv2.yang | 8 +- 3 files changed, 68 insertions(+), 49 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 0dabfc1e3..214c0276b 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -47,7 +47,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "0.16.1"; + oc-ext:openconfig-version "0.16.2"; + + revision "2021-11-17" { + description + "Add prefix to qualification prefix to when statements + at identifier level."; + reference "0.16.2"; + } revision "2021-07-22" { description @@ -754,7 +761,7 @@ module openconfig-network-instance { } uses oc-loc-rt:local-static-top { - when "./config/identifier = 'STATIC'" { + when "./config/identifier = 'oc-pol-types:STATIC'" { description "Include static route parameters only when the protocol is set to static"; @@ -765,7 +772,7 @@ module openconfig-network-instance { } uses oc-loc-rt:local-aggregate-top { - when "./config/identifier = 'LOCAL_AGGREGATE'" { + when "./config/identifier = 'oc-pol-types:LOCAL_AGGREGATE'" { description "Include aggregate route parameters only when the protocol is set to aggregate"; @@ -776,7 +783,7 @@ module openconfig-network-instance { } uses oc-bgp:bgp-top { - when "./config/identifier = 'BGP'" { + when "./config/identifier = 'oc-pol-types:BGP'" { description "Include BGP parameters only when the protocol is of type BGP"; @@ -787,7 +794,7 @@ module openconfig-network-instance { } uses oc-ospfv2:ospfv2-top { - when "./config/identifier = 'OSPF'" { + when "./config/identifier = 'oc-pol-types:OSPF'" { description "Include OSPFv2 parameters only when the protocol is of type OSPFv2"; @@ -795,7 +802,7 @@ module openconfig-network-instance { } uses oc-isis:isis-top { - when "./config/identifier = 'ISIS'" { + when "./config/identifier = 'oc-pol-types:ISIS'" { description "Include IS-IS configuration when the protocol is of type IS-IS"; @@ -806,7 +813,7 @@ module openconfig-network-instance { } uses oc-pim:pim-top { - when "./config/identifier = 'PIM'" { + when "./config/identifier = 'oc-pol-types:PIM'" { description "Include PIM configuration when the protocol is of type PIM"; @@ -817,7 +824,7 @@ module openconfig-network-instance { } uses oc-igmp:igmp-top { - when "./config/identifier = 'IGMP'" { + when "./config/identifier = 'oc-pol-types:IGMP'" { description "Include IGMP configuration when the protocol is of type IGMP"; diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index c51de0665..0400bb66b 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.2.2"; + oc-ext:openconfig-version "0.2.3"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "0.2.3"; + } revision "2019-11-28" { description @@ -494,7 +500,7 @@ submodule openconfig-ospfv2-lsdb { } container traffic-engineering { - when "../state/type = 'TRAFFIC_ENGINEERING'" { + when "../state/type = 'oc-ospf-types:TRAFFIC_ENGINEERING'" { description "Include the traffic-engineering information when the Opaque LSA being described is a Traffic Engineering @@ -520,7 +526,7 @@ submodule openconfig-ospfv2-lsdb { uses ospfv2-lsdb-common-unknown-tlv-structure; container router-address { - when "../state/type = 'TE_ROUTER_ADDRESS'" { + when "../state/type = 'oc-ospf-types:TE_ROUTER_ADDRESS'" { description "Include the router address container only when the type of the TLV is Router Address"; @@ -537,7 +543,7 @@ submodule openconfig-ospfv2-lsdb { } container link { - when "../state/type = 'TE_ROUTER_LINK'" { + when "../state/type = 'oc-ospf-types:TE_ROUTER_LINK'" { description "Include the link container only when the type of the TLV describes a traffic engineering link"; @@ -629,7 +635,7 @@ submodule openconfig-ospfv2-lsdb { } container node-attribute { - when "../state/type = 'TE_NODE_ATTRIBUTE'" { + when "../state/type = 'oc-ospf-types:TE_NODE_ATTRIBUTE'" { description "Include the node-attribute container only when the type of the TLV describes a node attribute"; @@ -670,7 +676,7 @@ submodule openconfig-ospfv2-lsdb { } // traffic-engineering container grace-lsa { - when "../state/type = 'GRACE_LSA'" { + when "../state/type = 'oc-ospf-types:GRACE_LSA'" { description "Include the grace-lsa container when the opaque LSA is specified to be of that type."; @@ -701,7 +707,7 @@ submodule openconfig-ospfv2-lsdb { } // grace LSA container router-information { - when "../state/type = 'ROUTER_INFORMATION_LSA'" { + when "../state/type = 'oc-ospf-types:ROUTER_INFORMATION_LSA'" { description "Include the router-information container when the opaque LSA type is specified to be an RI LSA"; @@ -729,7 +735,7 @@ submodule openconfig-ospfv2-lsdb { uses ospfv2-lsdb-common-unknown-tlv-structure; container informational-capabilities { - when "../state/type = 'RI_INFORMATIONAL_CAPABILITIES'" { + when "../state/type = 'oc-ospf-types:RI_INFORMATIONAL_CAPABILITIES'" { description "Include the informational capabilities specification when the TLV of the RI LSA is specified to be of this type"; @@ -749,7 +755,7 @@ submodule openconfig-ospfv2-lsdb { } container node-administrative-tags { - when "../state/type = 'RI_NODE_ADMIN_TAG'" { + when "../state/type = 'oc-ospf-types:RI_NODE_ADMIN_TAG'" { description "Include the node administrative tags specification when the TLV of the RI LSA is specified to be of this type"; @@ -768,7 +774,7 @@ submodule openconfig-ospfv2-lsdb { } container segment-routing-algorithm { - when "../state/type = 'RI_SR_ALGORITHM'" { + when "../state/type = 'oc-ospf-types:RI_SR_ALGORITHM'" { description "Include the segment routing algorithm specific parameters when the TLV of the RI LSA is specified to be of this type"; @@ -786,7 +792,7 @@ submodule openconfig-ospfv2-lsdb { } container segment-routing-sid-label-range { - when "../state/type = 'RI_SR_SID_LABEL_RANGE'" { + when "../state/type = 'oc-ospf-types:RI_SR_SID_LABEL_RANGE'" { description "Include the segment routing SID/Label range TLV specific state when the TLV of the RI LSA is specified to be of this type"; @@ -833,7 +839,7 @@ submodule openconfig-ospfv2-lsdb { } // router-information container extended-prefix { - when "../state/type = 'OSPFV2_EXTENDED_PREFIX'" { + when "../state/type = 'oc-ospf-types:OSPFV2_EXTENDED_PREFIX'" { description "Include the extended-prefix container when the opaque LSA type is specified to be an extended prefix LSA"; @@ -868,7 +874,7 @@ submodule openconfig-ospfv2-lsdb { } container extended-prefix-range { - when "../state/type = 'EXTENDED_PREFIX_RANGE'" { + when "../state/type = 'oc-ospf-types:EXTENDED_PREFIX_RANGE'" { description "Include the prefix range sub-TLV when the type of the sub-TLV is specified as such"; @@ -887,7 +893,7 @@ submodule openconfig-ospfv2-lsdb { } container prefix-sid { - when "../state/type = 'PREFIX_SID'" { + when "../state/type = 'oc-ospf-types:PREFIX_SID'" { description "Include parameters relating to the Prefix SID when the type of the sub-TLV is indicated as such"; @@ -906,7 +912,7 @@ submodule openconfig-ospfv2-lsdb { } // prefix-sid container sid-label-binding { - when "../state/type = 'SID_LABEL_BINDING'" { + when "../state/type = 'oc-ospf-types:SID_LABEL_BINDING'" { description "Include parameters relating to the SID/Label binding sub-TLV only when the type is indicated as such"; @@ -940,7 +946,7 @@ submodule openconfig-ospfv2-lsdb { } container sid-label-binding { - when "../state/type = 'SID_LABEL_BINDING'" { + when "../state/type = 'oc-ospf-types:SID_LABEL_BINDING'" { description "Include the SID/Label Binding sub-TLV parameters only when the type is indicated as such"; @@ -959,7 +965,7 @@ submodule openconfig-ospfv2-lsdb { } // sid-label-binding container ero-metric { - when "../state/type = 'ERO_METRIC'" { + when "../state/type = 'oc-ospf-types:ERO_METRIC'" { description "Include the ERO Metric sub-TLV parameters only when the type is indicated as such"; @@ -978,7 +984,7 @@ submodule openconfig-ospfv2-lsdb { } // ero-metric container ero-path { - when "../state/type = 'ERO_PATH'" { + when "../state/type = 'oc-ospf-types:ERO_PATH'" { description "Include the ERO Path sub-TLV parameters only when the type is indicated as such"; @@ -1005,7 +1011,7 @@ submodule openconfig-ospfv2-lsdb { } container ipv4-segment { - when "../state/type = 'IPV4_SEGMENT'" { + when "../state/type = 'oc-ospf-types:IPV4_SEGMENT'" { description "Include the IPv4 segment only when the type is indicated as such"; @@ -1022,7 +1028,7 @@ submodule openconfig-ospfv2-lsdb { } // ipv4-segment container unnumbered-hop { - when "../state/type = 'UNNUMBERED_INTERFACE_SEGMENT'" { + when "../state/type = 'oc-ospf-types:UNNUMBERED_INTERFACE_SEGMENT'" { description "Include the unnumbered segment only when the type is indicated as such"; @@ -1082,7 +1088,7 @@ submodule openconfig-ospfv2-lsdb { uses ospfv2-lsdb-common-unknown-tlv-structure; container adjacency-sid { - when "../state/type = 'ADJACENCY_SID'" { + when "../state/type = 'oc-ospf-types:ADJACENCY_SID'" { description "Include the Adjacency SID parameters only when the type of the sub-TLV is indicated as such"; @@ -1430,7 +1436,7 @@ submodule openconfig-ospfv2-lsdb { } leaf-list local-ip-address { - when "../type = 'TE_LINK_LOCAL_IP'" { + when "../type = 'oc-ospf-types:TE_LINK_LOCAL_IP'" { description "Include the local IP address field only when the sub-TLV type was a local IP address"; @@ -1443,7 +1449,7 @@ submodule openconfig-ospfv2-lsdb { } leaf-list remote-ip-address { - when "../type = 'TE_LINK_REMOTE_IP'" { + when "../type = 'oc-ospf-types:TE_LINK_REMOTE_IP'" { description "Include the remote IP address field only when the sub-TLV type was a remote IP address"; @@ -1456,7 +1462,7 @@ submodule openconfig-ospfv2-lsdb { } leaf metric { - when "../type = 'TE_LINK_METRIC'" { + when "../type = 'oc-ospf-types:TE_LINK_METRIC'" { description "Include the traffic engineering metric only when the sub-TLV type is a TE metric"; @@ -1470,7 +1476,7 @@ submodule openconfig-ospfv2-lsdb { } leaf maximum-bandwidth { - when "../type = 'TE_LINK_MAXIMUM_BANDWIDTH'" { + when "../type = 'oc-ospf-types:TE_LINK_MAXIMUM_BANDWIDTH'" { description "Include the traffic engineering metric only when the sub-TLV type is the maximum bandwidth"; @@ -1485,7 +1491,7 @@ submodule openconfig-ospfv2-lsdb { } leaf maximum-reservable-bandwidth { - when "../type = 'TE_LINK_MAXIUMUM_RESERVABLE_BANDWIDTH'" { + when "../type = 'oc-ospf-types:TE_LINK_MAXIUMUM_RESERVABLE_BANDWIDTH'" { description "Include the maximum reservable bandwidth field only when the sub-TLV type is the maximum reservable bandwidth"; @@ -1572,7 +1578,7 @@ submodule openconfig-ospfv2-lsdb { } leaf-list local-ipv4-addresses { - when "../type = 'NODE_IPV4_LOCAL_ADDRESS'" { + when "../type = 'oc-ospf-types:NODE_IPV4_LOCAL_ADDRESS'" { description "Include the local IPv4 addresses when the type of the sub-TLV indicates that this is the contained data"; @@ -1584,7 +1590,7 @@ submodule openconfig-ospfv2-lsdb { } leaf-list local-ipv6-addresses { - when "../type = 'NODE_LOCAL_IPV6_ADDRESS'" { + when "../type = 'oc-ospf-types:NODE_LOCAL_IPV6_ADDRESS'" { description "Include the local IPv6 addresses when the type of the sub-TLV indicfates that this is the contained data"; @@ -1623,7 +1629,7 @@ submodule openconfig-ospfv2-lsdb { } leaf period { - when "../type = 'GRACE_PERIOD'" { + when "../type = 'oc-ospf-types:GRACE_PERIOD'" { description "Include the period specification when the sub-TLV type is indicated to be of this type"; @@ -1639,7 +1645,7 @@ submodule openconfig-ospfv2-lsdb { } leaf reason { - when "../type = 'GRACE_RESTART_REASON'" { + when "../type = 'oc-ospf-types:GRACE_RESTART_REASON'" { description "Include the restart reason when the sub-TLV type specifies this is included"; @@ -1677,7 +1683,7 @@ submodule openconfig-ospfv2-lsdb { } leaf ip-interface-address { - when "../type = 'GRACE_IP_INTERFACE_ADDRESS'" { + when "../type = 'oc-ospf-types:GRACE_IP_INTERFACE_ADDRESS'" { description "Include the interface address when the sub-TLV type specifies that it is included"; @@ -2319,7 +2325,7 @@ submodule openconfig-ospfv2-lsdb { } uses ospfv2-lsdb-router-lsa-structure { - when "../../state/type = 'ROUTER_LSA'" { + when "../../state/type = 'oc-ospf-types:ROUTER_LSA'" { description "Include the router LSA hierarchy solely when that LSA type is being described"; @@ -2327,7 +2333,7 @@ submodule openconfig-ospfv2-lsdb { } uses ospfv2-lsdb-network-lsa-structure { - when "../../state/type = 'NETWORK_LSA'" { + when "../../state/type = 'oc-ospf-types:NETWORK_LSA'" { description "Include the network LSA hierarchy solely when that LSA type is being described"; @@ -2337,8 +2343,8 @@ submodule openconfig-ospfv2-lsdb { uses ospfv2-lsdb-summary-lsa-structure { // rjs TODO: check this syntax when "../../state/type = " + - "'SUMMARY_IP_NETWORK_LSA' or " + - "../../state/type = 'SUMMARY_ASBR_LSA'" { + "'oc-ospf-types:SUMMARY_IP_NETWORK_LSA' or " + + "../../state/type = 'oc-ospf-types:SUMMARY_ASBR_LSA'" { description "Include the summary LSA hierarchy solely when that LSA type is being described"; @@ -2346,7 +2352,7 @@ submodule openconfig-ospfv2-lsdb { } uses ospfv2-lsdb-asexternal-lsa-structure { - when "../../state/type = 'AS_EXTERNAL_LSA'" { + when "../../state/type = 'oc-ospf-types:AS_EXTERNAL_LSA'" { description "Include the AS external LSA hierarchy solely when that LSA type is being described"; @@ -2354,7 +2360,7 @@ submodule openconfig-ospfv2-lsdb { } uses ospfv2-lsdb-nssa-external-lsa-structure { - when "../../state/type = 'NSSA_AS_EXTERNAL_LSA'" { + when "../../state/type = 'oc-ospf-types:NSSA_AS_EXTERNAL_LSA'" { description "Include the NSSA External LSA hierarchy solely when that LSA type is being described"; @@ -2362,9 +2368,9 @@ submodule openconfig-ospfv2-lsdb { } uses ospfv2-lsdb-opaque-lsa-structure { - when "../../state/type = 'OSPFV2_LINK_SCOPE_OPAQUE_LSA' - or ../../state/type = 'OSPFV2_AREA_SCOPE_OPAQUE_LSA' - or ../../state/type = 'OSPFV2_AS_SCOPE_OPAQUE_LSA'" { + when "../../state/type = 'oc-ospf-types:OSPFV2_LINK_SCOPE_OPAQUE_LSA' + or ../../state/type = 'oc-ospf-types:OSPFV2_AREA_SCOPE_OPAQUE_LSA' + or ../../state/type = 'oc-ospf-types:OSPFV2_AS_SCOPE_OPAQUE_LSA'" { description "Include the Opaque LSA structure when type of entry being described in an opaque LSA"; diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index e760e9958..cce6041cb 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.2.3"; + oc-ext:openconfig-version "0.2.4"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "0.2.4"; + } revision "2021-03-17" { description From 03a30bb0d38c9fa8da5c12440443e1ff56df8730 Mon Sep 17 00:00:00 2001 From: samier barguil Date: Wed, 1 Dec 2021 10:21:28 +0100 Subject: [PATCH 006/372] Update the qualification prefix for MPLS module - 1003 (#1013) * (M) release/models/mpls/openconfig-mpls-rsvp.yang * (M) release/models/mpls/openconfig-mpls-te.yang * (M) release/models/mpls/openconfig-mpls.yang - Add module name qualifications to when statements. --- release/models/mpls/openconfig-mpls-rsvp.yang | 22 ++++++++++++------- release/models/mpls/openconfig-mpls-te.yang | 20 +++++++++++------ release/models/mpls/openconfig-mpls.yang | 8 ++++++- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-rsvp.yang b/release/models/mpls/openconfig-mpls-rsvp.yang index 2507aa95e..680515188 100644 --- a/release/models/mpls/openconfig-mpls-rsvp.yang +++ b/release/models/mpls/openconfig-mpls-rsvp.yang @@ -28,7 +28,13 @@ module openconfig-mpls-rsvp { parameters and LSP-specific configuration for constrained-path LSPs"; - oc-ext:openconfig-version "3.0.2"; + oc-ext:openconfig-version "3.0.3"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "3.0.3"; + } revision "2020-02-04" { description @@ -574,7 +580,7 @@ module openconfig-mpls-rsvp { "properties of RSVP point-to-point paths"; leaf source { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + when "../signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } @@ -584,7 +590,7 @@ module openconfig-mpls-rsvp { } leaf soft-preemption { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + when "../signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } @@ -603,7 +609,7 @@ module openconfig-mpls-rsvp { an LSP tunnel"; leaf setup-priority { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + when "../signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } @@ -620,7 +626,7 @@ module openconfig-mpls-rsvp { } leaf hold-priority { - when "../signaling-protocol = 'PATH_SETUP_RSVP'" { + when "../signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } @@ -644,7 +650,7 @@ module openconfig-mpls-rsvp { leaf setup-priority { when "../../../../../" + - "config/signaling-protocol = 'PATH_SETUP_RSVP'" { + "config/signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } @@ -662,7 +668,7 @@ module openconfig-mpls-rsvp { leaf hold-priority { when "../../../../../" + - "config/signaling-protocol = 'PATH_SETUP_RSVP'" { + "config/signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } @@ -687,7 +693,7 @@ module openconfig-mpls-rsvp { leaf retry-timer { when "../../../../../" + - "config/signaling-protocol = 'PATH_SETUP_RSVP'" { + "config/signaling-protocol = 'oc-mplst:PATH_SETUP_RSVP'" { description "When the signaling protocol is RSVP-TE "; } diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index 8bbcfe973..cf30f7415 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -29,11 +29,17 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.1.1"; + oc-ext:openconfig-version "3.1.2"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "3.1.2"; + } revision "2021-06-16" { description - "Remove trailing whitespace"; + "Remove trailing whitespace."; reference "3.1.1"; } @@ -840,7 +846,7 @@ submodule openconfig-mpls-te { } leaf use-cspf { - when "../path-computation-method = 'LOCALLY_COMPUTED'" { + when "../path-computation-method = 'oc-mplst:LOCALLY_COMPUTED'" { description "The use of cspf when the path-computation method is local computation"; @@ -851,7 +857,7 @@ submodule openconfig-mpls-te { } leaf cspf-tiebreaker { - when "../path-computation-method = 'LOCALLY_COMPUTED'" { + when "../path-computation-method = 'oc-mplst:LOCALLY_COMPUTED'" { description "The cspf tiebreaking method when the path is locally computed"; @@ -864,7 +870,7 @@ submodule openconfig-mpls-te { leaf path-computation-server { - when "../path-computation-method = 'EXTERNALLY_QUERIED'" { + when "../path-computation-method = 'oc-mplst:EXTERNALLY_QUERIED'" { description "The path-computation server when the path is externally queried"; @@ -876,7 +882,7 @@ submodule openconfig-mpls-te { } leaf explicit-path-name { - when "../path-computation-method = 'EXPLICITLY_DEFINED'" { + when "../path-computation-method = 'oc-mplst:EXPLICITLY_DEFINED'" { description "The name of the explicitly defined path used"; } @@ -910,7 +916,7 @@ submodule openconfig-mpls-te { "Top level grouping for p2p configuration"; container p2p-tunnel-attributes { - when "../config/type = 'P2P'" { + when "../config/type = 'oc-mplst:P2P'" { description "Include this container for LSPs of type P2P"; } diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index ae76c1e68..c89fdf431 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -71,7 +71,13 @@ module openconfig-mpls { +-------+ "; - oc-ext:openconfig-version "3.2.1"; + oc-ext:openconfig-version "3.2.2"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "3.2.2"; + } revision "2021-06-16" { description From 2b37c3732025fa598581349cba05c21c8ee3e826 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 14 Dec 2021 11:46:30 -0800 Subject: [PATCH 007/372] Import public PR #448 + #449. (#1024) * (M) regexp-tests/openconfig-bgp-types-test.yang - Add regular expression test for 4b:2b community that was not caught by the previous testing. * (M) yang/bgp/openconfig-bgp-types.yang - Fix the regular expression to allow 4-byte private ASN range to be used (target:4200000000:1234 was not allowable). Submitting author: J vanBemmel --- release/models/bgp/openconfig-bgp-types.yang | 88 +++++++++++--------- 1 file changed, 49 insertions(+), 39 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index 8b1d2b4ee..d3117f7d6 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -25,7 +25,17 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "5.3.0"; + oc-ext:openconfig-version "5.3.1"; + + revision "2021-08-06" { + description + "Fix pattern regexes to allow full 4-byte private ASN range including + 42xxxxxxxx in extended communities + + Types impacted: + - bgp-ext-community-type"; + reference "5.3.1"; + } revision "2021-01-07" { description @@ -379,13 +389,13 @@ module openconfig-bgp-types { // 0xFFFFFFFF are reserved } type string { - pattern '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + pattern '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; - oc-ext:posix-pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + oc-ext:posix-pattern '^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } } @@ -401,17 +411,17 @@ module openconfig-bgp-types { type string { // Type 1: 2-octet global and 4-octet local // (AS number) (Integer) - pattern '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + pattern '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])'; - oc-ext:posix-pattern '^(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + oc-ext:posix-pattern '^(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])$'; } type string { @@ -420,46 +430,46 @@ module openconfig-bgp-types { pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } type string { // RFC5668: 4-octet global and 2-octet local // (AS number) (integer) - pattern '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + pattern '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; oc-ext:posix-pattern '^(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } type string { // route-target with Type 1 // route-target:(ASN):(local-part) pattern 'route\-target:' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])'; - oc-ext:posix-pattern '^route\-target:' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + oc-ext:posix-pattern '^route\-target:' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])$'; } type string { @@ -469,13 +479,13 @@ module openconfig-bgp-types { '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; oc-ext:posix-pattern '^route\-target:' + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } type string { @@ -483,33 +493,33 @@ module openconfig-bgp-types { pattern 'route\-target:' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; oc-ext:posix-pattern '^route\-target:' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } type string { // route-origin with Type 1 pattern 'route\-origin:' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])'; oc-ext:posix-pattern '^route\-origin:' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])$'; } type string { @@ -518,13 +528,13 @@ module openconfig-bgp-types { '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; oc-ext:posix-pattern '^route\-origin:' + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' + '25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|' + '2[0-4][0-9]|25[0-5]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } type string { @@ -532,16 +542,16 @@ module openconfig-bgp-types { pattern 'route\-origin:' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])'; oc-ext:posix-pattern '^route\-origin:' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9]):' + - '(6553[0-5]|655[0-2][0-9]|654[0-9]{2}|65[0-4][0-9]{2}' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$'; } type string { @@ -550,13 +560,13 @@ module openconfig-bgp-types { '[0-1]{2}:' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])'; oc-ext:posix-pattern '^color:' + '[0-1]{2}:' + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + - '429[0-3][0-9]{6}|4[0-1][0-9]{7}|[1-3][0-9]{9}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])$'; } } From c28f23731fe0d7b5816746bccef1efa25075b36a Mon Sep 17 00:00:00 2001 From: Alex Bogdanov Date: Wed, 29 Dec 2021 22:54:47 +0000 Subject: [PATCH 008/372] Add a OpenConfig model for keychains. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * (A) yang/keychain/openconfig-keychain.yang * (A) yang/keychain/openconfig-keychain-types.yang - Add an OpenConfig model that covers keychains that can be referenced by other protocols. Co-authored-by: Rob Shakir Co-authored-by: Anees Shaikh Co-authored-by: Óscar González de Dios Co-authored-by: sbarguil --- release/models/keychain/.spec.yml | 7 + .../keychain/openconfig-keychain-types.yang | 140 +++++++++ .../models/keychain/openconfig-keychain.yang | 277 ++++++++++++++++++ 3 files changed, 424 insertions(+) create mode 100644 release/models/keychain/.spec.yml create mode 100644 release/models/keychain/openconfig-keychain-types.yang create mode 100644 release/models/keychain/openconfig-keychain.yang diff --git a/release/models/keychain/.spec.yml b/release/models/keychain/.spec.yml new file mode 100644 index 000000000..8c56cb134 --- /dev/null +++ b/release/models/keychain/.spec.yml @@ -0,0 +1,7 @@ +- name: openconfig-keychain + docs: + - yang/keychain/openconfig-keychain-types.yang + - yang/keychain/openconfig-keychain.yang + build: + - yang/keychain/openconfig-keychain.yang + run-ci: true diff --git a/release/models/keychain/openconfig-keychain-types.yang b/release/models/keychain/openconfig-keychain-types.yang new file mode 100644 index 000000000..799e5db5f --- /dev/null +++ b/release/models/keychain/openconfig-keychain-types.yang @@ -0,0 +1,140 @@ +module openconfig-keychain-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/oc-keychain-types"; + + prefix "oc-keychain-types"; + + import openconfig-extensions { prefix oc-ext; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module contains general data definitions for use in + keychain-based authentication."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2021-10-01" { + description + "Initial revision of types for keychain model"; + reference "0.1.0"; + } + + + identity AUTH_TYPE { + description + "Base identify to define the type of authentication"; + } + + identity NONE { + base AUTH_TYPE; + description + "NO authentication is used"; + } + + identity SIMPLE_KEY { + base AUTH_TYPE; + description + "Authentication is provided via a simple authentication key. The + key is configured at each end, and the exchange of the key may be + encrypted or not"; + } + + identity KEYCHAIN { + base AUTH_TYPE; + description + "This identity indicates that the authentication is selected + from a keychain."; + } + + identity CRYPTO_TYPE { + description + "Base identify for the cryptographic algorithm"; + } + + identity CRYPTO_NONE{ + base CRYPTO_TYPE; + description + "No encryption is used"; + } + + identity MD5 { + base CRYPTO_TYPE; + description + "MD5 message-digest algorithm produces a 128-bit hash value."; + reference + "RFC 1321 - The MD5 Message-Digest Algorithm"; + } + + identity HMAC_MD5 { + base CRYPTO_TYPE; + description + "HMAC-MD5 keyed hash algorithm constructed from MD5 hash + function and used as a HMAC."; + reference + "RFC 2104 - HMAC: Keyed-Hashing for Message Authentication"; + } + + identity SHA_1 { + base CRYPTO_TYPE; + description + "SHA-1 cryptographic hash function that produces a 160-bit hash value."; + reference + "RFC 3174 - US Secure Hash Algorithm 1 (SHA1)"; + } + identity HMAC_SHA_1 { + base CRYPTO_TYPE; + description + "HMAC-SHA-1 keyed hash algorithm constructed from SHA-1 hash + function and used as a HMAC."; + } + + identity HMAC_SHA_1_12 { + base CRYPTO_TYPE; + description + "HMAC-SHA-1-12 algorithm"; + } + + identity HMAC_SHA_1_20 { + base CRYPTO_TYPE; + description + "HMAC-SHA-1-20 algorithm"; + } + + identity HMAC_SHA_1_96 { + base CRYPTO_TYPE; + description + "HMAC-SHA-1-96 keyed hash algorithm constructed from SHA-1 hash + function and used as a HMAC, operating on 64-byte blocks of data."; + reference + "RFC 2404 - The Use of HMAC-SHA-1-96 within ESP and AH"; + } + + identity HMAC_SHA_256 { + base CRYPTO_TYPE; + description + "HMAC-SHA-256 keyed hash algorithm constructed from the secure + SHA-256 hash function and used as a HMAC."; + reference + "RFC 6234 - US Secure Hash Algorithms (SHA and SHA-based + HMAC and HKDF)"; + } + + identity AES_28_CMAC_96 { + base CRYPTO_TYPE; + description + "AES-128-CMAC-96 keyed hash function based on a AES-128 block + cipher."; + reference + "RFC 4494 - The AES-CMAC-96 Algorithm and Its Use with IPsec"; + } +} diff --git a/release/models/keychain/openconfig-keychain.yang b/release/models/keychain/openconfig-keychain.yang new file mode 100644 index 000000000..200480ac9 --- /dev/null +++ b/release/models/keychain/openconfig-keychain.yang @@ -0,0 +1,277 @@ +module openconfig-keychain { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/oc-keychain"; + + prefix "oc-keychain"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-keychain-types { prefix oc-keychain-types; } + import openconfig-types { prefix oc-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module describes a YANG model for keychain configuration + and management. These keys can be changed frequently to + increase security in long-lived connections. A keychain can be used + for authenticaion in a number of scenarios, including in routing protocols + (e.g. BGP, IS-IS, OSPF). A keychain provides a solution for storing + a number of different keys, each key string value is associated with a + specific key id, name, the lifetime that the key is valid and an + encryption algorithm. + + This model defines a central location for defining named keychains, + which may be then referenced by other models such as routing protocol + management."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2021-10-01" { + description + "Initial revision of keychain model."; + reference "0.1.0"; + } + + grouping valid-lifetime-config { + description + "This grouping defines key begin lifetime parameters."; + + leaf start-time { + type oc-types:timeticks64; + description + "The time at which the key becomes valid for use. + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf end-time { + type oc-types:timeticks64; + description + "The time at which the key becomes invalid for use. + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + + Leaving this value unset, or setting it to 0, indicates that + the key remains valid forever (no end time)."; + } + } + + grouping lifetime-symmetry-config { + description + "Grouping to define configuration data for managing how + send and receive lifetime are specified."; + + leaf send-and-receive { + type boolean; + description + "When this is set to true (the default value), the specified + send lifetime is also used in the receive direction. When set + to false, the device should use the specified receive-lifetime + for the receive direction (asymmetric mode). If send-and-receive + is false, and the device does not support asymmetric configuration, + the config should be rejected as unsupported."; + default true; + } + } + + grouping lifetime-base { + description + "This grouping defines key lifetime parameters."; + + container send-lifetime { + description + "Specifies the lifetime of the key for sending authentication + information to the peer."; + + container config { + description + "Configuration data for key send lifetime."; + + uses valid-lifetime-config; + uses lifetime-symmetry-config; + } + + container state { + config false; + description + "Operational state data for key send lifetime."; + + uses valid-lifetime-config; + uses lifetime-symmetry-config; + } + } + + container receive-lifetime { + description + "Specify the validity lifetime of the key in the receive direction. + Some platforms may only support symmetric send and receive lifetimes, + in which case the receive-lifetime is typically not specified."; + + container config { + description + "Configuration data for key receive lifetime."; + + uses valid-lifetime-config; + } + + container state { + config false; + description + "Operational state data for key receive lifetime."; + + uses valid-lifetime-config; + } + } + } + + grouping keychain-base-config { + description + "This grouping defines key-chain parameters."; + + leaf name { + type string; + description + "Keychain name."; + } + + leaf tolerance { + type union { + type enumeration { + enum FOREVER { + description + "Receive key does not expire (equivalent to infinite tolerance)."; + } + } + type uint32; + } + description + "Tolerance (overlap time) that a receive key should be accepted. May be + expressed as range in seconds, or using the FOREVER value to indicate + that the key does not expire. The default value should be 0, i.e., no + tolerance."; + } + } + + grouping keychain-key-config { + description "This grouping defines key-chain key parameters."; + + leaf key-id { + type uint64; + description + "Identifier for the key within the keychain."; + } + + leaf secret-key { + type string; + description + "Authentication key supplied as an encrypted value. The system should store and + return the key in encrypted form."; + } + + leaf crypto-algorithm { + type identityref { + base oc-keychain-types:CRYPTO_TYPE; + } + description + "Cryptographic algorithm associated with the key. Note that not all cryptographic + algorithms are available in all contexts (e.g., across different protocols)."; + } + } + + grouping keychain-key-base { + description + "This grouping defines keychain parameters"; + + container keys { + description + "list of keys to be stored"; + list key { + key "key-id"; + description + "List of configured keys for the keychain."; + + leaf key-id { + type leafref { + path "../config/key-id"; + } + description + "Reference to key id."; + } + + container config { + description + "This container defines keychain key configuration."; + + uses keychain-key-config; + } + + container state { + config false; + description + "This container defines keychain key state."; + + uses keychain-key-config; + } + + uses lifetime-base; + } + } + } + + grouping keychain-common-base { + description + "This grouping defines keychain parameters"; + + container config { + description + "This container defines keychain configuration."; + + uses keychain-base-config; + } + + container state { + config false; + description + "This container defines keychain state information."; + + uses keychain-base-config; + } + } + + grouping keychain-top { + description + "This grouping define top level structure."; + + container keychains { + description + "This container defines keychains."; + + list keychain { + key "name"; + description + "List of defined keychains."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to configured keychain name"; + } + + uses keychain-common-base; + uses keychain-key-base; + } + } + } + + uses keychain-top; +} From 3c6b98f1573fb9c3e16ae97d5bce46c0d51f6d82 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 30 Dec 2021 13:17:05 -0800 Subject: [PATCH 009/372] Add support for multiple errors per IC subsystem block * (M) release/yang/platform/openconfig-platform-pipeline-counters.yang - Add support for multiple errors to be reported per block of the pipeline counters model. Previously, a single error could be reported despite having support for multiple. --- ...openconfig-platform-pipeline-counters.yang | 165 ++++++++++++++---- 1 file changed, 129 insertions(+), 36 deletions(-) diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index d9c7e4189..4159edc5a 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,17 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2021-10-16" { + description + "Update pipeline error counters to allow for multiple errors + per block."; + reference "0.2.0"; + } + revision "2020-07-31" { description "Initial revision of platform pipeline counters."; @@ -245,14 +252,26 @@ module openconfig-platform-pipeline-counters { "The IC interface subsystem connects the IC to the external PHY or MAC."; - // We do not need a 'config' container here since there is no configurable state for a particular - // entity. - - container state { + list interface-block-error { + key "name"; description - "Errors corresponding to the interface subsystem of the IC."; - - uses pipeline-errors-packet-interface-block-state; + "An individual error within the interface block. Each error counter + is uniquely identified by the name of the error."; + + leaf name { + type leafref { + path "../state/name"; + } + description + "Reference to the name of the error being described."; + } + + container state { + description + "Errors corresponding to the interface subsystem of the IC."; + + uses pipeline-errors-packet-interface-block-state; + } } } @@ -261,11 +280,26 @@ module openconfig-platform-pipeline-counters { "The IC lookup subsystem perform the next hop lookup of the packet and other forwarding features such as firewall filters."; - container state { + list lookup-block-error { + key "name"; description - "Errors corresponding to the lookup subsystem of the IC."; - - uses pipeline-errors-packet-lookup-block-state; + "An individual error within the lookup block. Each error counter + is uniquely identified by the name of the error."; + + leaf name { + type leafref { + path "../state/name"; + } + description + "Reference to the name of the error being described."; + } + + container state { + description + "Errors corresponding to the lookup subsystem of the IC."; + + uses pipeline-errors-packet-lookup-block-state; + } } } @@ -274,11 +308,26 @@ module openconfig-platform-pipeline-counters { "The IC queueing subsystem buffers the packet while processing it and queues the packet for delivery to the next stage"; - container state { + list queueing-block-error { + key "name"; description - "Errors corresponding to the queueing subsystem of the IC."; - - uses pipeline-errors-packet-queueing-block-state; + "An individual error within the queueing block. Each error counter + is uniquely identified by the name of the error."; + + leaf name { + type leafref { + path "../state/name"; + } + description + "Reference to the name of the error being described."; + } + + container state { + description + "Errors corresponding to the queueing subsystem of the IC."; + + uses pipeline-errors-packet-queueing-block-state; + } } } @@ -287,11 +336,26 @@ module openconfig-platform-pipeline-counters { "The IC fabric block subsystem connects the IC to the external systems fabric subsystem"; - container state { + list fabric-block-error { + key "name"; description - "Errors corresponding to the fabric subsystem of the IC."; - - uses pipeline-errors-packet-fabric-block-state; + "An individual error within the fabric block. Each error counter + is uniquely identified by the name of the error."; + + leaf name { + type leafref { + path "../state/name"; + } + description + "Reference to the name of the error being described."; + } + + container state { + description + "Errors corresponding to the fabric subsystem of the IC."; + + uses pipeline-errors-packet-fabric-block-state; + } } } @@ -300,11 +364,27 @@ module openconfig-platform-pipeline-counters { "The IC host interface block subsystem connects the IC to the external systems host or control subsystem"; - container state { + list host-interface-error { + key "name"; description - "Errors corresponding to the host interface subsystem of the IC."; - - uses pipeline-errors-packet-host-interface-block-state; + "An individual error within the host interface block. Each error + counter is uniquely identified by the name of the error."; + + leaf name { + type leafref { + path "../state/name"; + } + description + "Reference to the name of the error being described."; + } + + container state { + description + "Errors corresponding to the host interface subsystem of + the IC."; + + uses pipeline-errors-packet-host-interface-block-state; + } } } } @@ -444,7 +524,7 @@ module openconfig-platform-pipeline-counters { "Amount of used firewall or ACL memory counter measured in entries. The number of used entries must include the entries that are 'allocated but free' if the memory reaping algorithm makes - these entries practically unusable"; + these entries practically unusable."; } leaf acl-memory-total-bytes { @@ -819,25 +899,26 @@ module openconfig-platform-pipeline-counters { description "A common set of error counters that apply to multiple error sections."; - leaf error-name { + leaf name { type string; description "Name of the interrupt, hardware error, or software error in the NPU."; } - leaf error-count { + leaf count { type uint64; description - "Number of all the errors."; + "Total count of errors of this type."; } - leaf error-threshold { + leaf threshold { type uint64; description - "Number of errors before recovery action."; + "Number of errors before a recovery action is automatically + taken by the system."; } - leaf error-action { + leaf-list action { type enumeration { enum LOG { description @@ -869,11 +950,22 @@ module openconfig-platform-pipeline-counters { } } description - "Error action taken - log, linecard reboot, linecard offline, NPU - reset, NPU offline, gather diagnostic data, raise an alarm."; + "Error actions that are taken by the system - log, linecard reboot, + linecard offline, NPU reset, NPU offline, gather diagnostic data, + raise an alarm."; + } + + leaf active { + type boolean; + description + "The error is currently in an active state. When the system detects + that the specified threshold is exceeded, this value should be set to + true."; + default false; + oc-ext:telemetry-on-change; } - leaf error-level { + leaf level { type enumeration { enum FATAL { description @@ -894,8 +986,9 @@ module openconfig-platform-pipeline-counters { } } description - "Identify the severity of the error - Fatal, Major, Minor, or - Informational."; + "The severity of the error that is being recorded by the system. This + value can be used by a consumer to determine the action when this error + is recorded."; } } From 2e11f5479490c6d8b6aa59364d0d76b505616feb Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 11 Jan 2022 14:51:29 -0500 Subject: [PATCH 010/372] Add VXLAN as an encapsulation header type. * (M) yang/aft/openconfig-aft-types.yang - Applied PR #467 from public (mikewiebe ) - Adds VXLAN encapsulation as a header type. --- release/models/aft/openconfig-aft-types.yang | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/release/models/aft/openconfig-aft-types.yang b/release/models/aft/openconfig-aft-types.yang index ade141f44..7a29ea659 100644 --- a/release/models/aft/openconfig-aft-types.yang +++ b/release/models/aft/openconfig-aft-types.yang @@ -16,7 +16,13 @@ module openconfig-aft-types { "Types related to the OpenConfig Abstract Forwarding Table (AFT) model"; - oc-ext:openconfig-version "0.3.4"; + oc-ext:openconfig-version "0.3.5"; + + revision "2021-08-24" { + description + "Add vxlan to next-hops encapsulation-header-type."; + reference "0.3.5"; + } revision "2019-11-07" { description @@ -73,6 +79,10 @@ module openconfig-aft-types { "The encapsulation header is one or more MPLS labels indicated by the pushed and popped label stack lists."; } + enum VXLAN { + description + "The encapsulation header is a VXLAN packet header"; + } } description "Types of tunnel encapsulation that are supported by systems as either From 665de66040225eede772251acdd731da1bac7e35 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 19 Jan 2022 12:38:49 -0500 Subject: [PATCH 011/372] Add support for authentication in IS-IS. (#1069) * (M) yang/keychain/openconfig-keychain.yang - Add a typedef for referencing a keychain from other modules. * (M) yang/isis/* - Fix support for hello-authentication to allow for references to a specific keychain as defined in the keychain model. - Fix support for authentication of *SNP packets, referencing a keychain that can be used to auth these packets. - move IS-IS model to openconfig-inet-types rather than ietf-inet-types. * Origin: openconfig/public#549 --- release/models/isis/openconfig-isis-lsp.yang | 9 +- .../models/isis/openconfig-isis-routing.yang | 9 +- release/models/isis/openconfig-isis.yang | 344 +++++++----------- .../models/keychain/openconfig-keychain.yang | 17 +- 4 files changed, 156 insertions(+), 223 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 219c57ec3..e7df9a04c 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.6.2"; + oc-ext:openconfig-version "0.7.0"; + + revision "2021-12-31" { + description + "Add support for per-interface hello authentication, and per-level + *SNP authentication."; + reference "0.7.0"; + } revision "2021-06-16" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 4675cce5b..ea6c4e435 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2021-12-31" { + description + "Add support for per-interface hello authentication, and per-level + *SNP authentication."; + reference "0.7.0"; + } revision "2021-03-17" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 27b743b8b..0b0cab1d1 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -8,19 +8,16 @@ module openconfig-isis { prefix "oc-isis"; // import some basic types - import ietf-inet-types { prefix "inet"; } - import ietf-yang-types { prefix "yang"; } import openconfig-types { prefix "oc-types"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-yang-types { prefix "oc-yang"; } import openconfig-isis-types { prefix "oc-isis-types"; } import openconfig-routing-policy { prefix "oc-rpol"; } import openconfig-extensions { prefix "oc-ext"; } import openconfig-interfaces { prefix "oc-if"; } import openconfig-segment-routing { prefix "oc-sr"; } import openconfig-bfd { prefix "oc-bfd"; } - // TODO(robjs): Import authentication and keychain following merge of these - // modules. - //import openconfig-authentication-types { prefix "oc-auth-types"; } - //import openconfig-keychain { prefix "oc-keychain"; } + import openconfig-keychain { prefix "oc-keychain"; } // Include submodules: // IS-IS LSP is the LSDB for IS-IS. @@ -56,7 +53,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "0.6.2"; + oc-ext:openconfig-version "0.7.0"; + + revision "2021-12-31" { + description + "Add support for per-interface hello authentication, and per-level + *SNP authentication."; + reference "0.7.0"; + } revision "2021-06-16" { description @@ -263,136 +267,24 @@ module openconfig-isis { } } - grouping authentication-key-config { - description - "This grouping defines authentication key configuration."; - - leaf auth-password { - type oc-types:routing-password; - description - "Authentication key string."; - } - } - - grouping keychain-base-group { - description - "This grouping defines keychain configuration."; - - container keychain { - description - "This container defines keychain parameters."; - - // TODO(robjs): Import keychain parameters following merge of the auth - // models. - //uses oc-keychain:keychain-common-base; - //uses oc-keychain:tolerance-base; - //uses oc-keychain:keychain-key-base; - } - } - - grouping isis-authentication-config { - description - "This grouping defines ISIS authentication configuration."; - - // TODO(robjs): Add authentication following merge of auth modules. - //leaf auth-type { - // type oc-auth-types:auth-type; - // description - // "ISIS authentication type (key, key-chain)."; - //} - - leaf csnp-authentication { - type boolean; - default false; - description - "Enable or disable for IS-IS CSNPs."; - } - - leaf psnp-authentication { - type boolean; - default false; - description - "Enable or disable authentication for IS-IS PSNPs."; - } - - leaf lsp-authentication { - type boolean; - default false; - description - "Enable or disable authentication for IS-IS LSPs."; - } - } - - grouping isis-authentication-group { - description - "This grouping defines ISIS authentication."; - - container config { - description - "This container defines ISIS authentication configuration."; - - uses isis-authentication-config; - } - - container state { - config false; - description - "This container defines ISIS authentication state."; - - uses isis-authentication-config; - } - - container key { - description - "This container defines ISIS authentication key"; - container config { - description - "This container defines ISIS authentication key configuration."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - - container state { - config false; - description - "This container defines ISIS authentication key state."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - } - - uses keychain-base-group { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY_CHAIN'"; - } - } - grouping isis-hello-authentication-config { description "Configuration options for IS-IS hello authentication."; - leaf hello-authentication { + leaf enabled { type boolean; default false; description - "Enabled or disable ISIS Hello authentication."; + "Enabled or disable ISIS Hello authentication. Hello authentication + is used on a per-interface basis to authenticate adjacencies on the + interface."; } - // TODO(robjs): Add hello-auth-type following merge of auth models. - //leaf hello-auth-type { - // type oc-auth-types:auth-type; - // description - // "ISIS authentication type (key, key-chain)."; - //} + leaf keychain { + type oc-keychain:keychain-ref; + description + "Reference to a keychain that should be used for hello authentication."; + } } grouping isis-hello-authentication-group { @@ -413,40 +305,6 @@ module openconfig-isis { uses isis-hello-authentication-config; } - - container key { - description - "This container defines ISIS authentication key"; - - container config { - description - "This container defines ISIS authentication key configuration."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - - container state { - config false; - description - "This container defines ISIS authentication key state."; - - uses authentication-key-group-config { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY'"; - } - } - } - - uses keychain-base-group { - // TODO(aashaikh): Add auth-type conditions after merge of - // auth models. - // when "../auth-type = 'KEY_CHAIN'"; - } } grouping isis-ldp-igp-config { @@ -477,13 +335,13 @@ module openconfig-isis { "This grouping defines ISIS Traffic Engineering configuration."; leaf ipv4-router-id { - type inet:ipv4-address-no-zone; + type oc-inet:ipv4-address; description "IPv4 MPLS Traffic Engineering Router-ID."; } leaf ipv6-router-id { - type inet:ipv6-address-no-zone; + type oc-inet:ipv6-address; description "IPv6 MPLS Traffic Engineering Router-ID."; } @@ -924,22 +782,6 @@ module openconfig-isis { uses oc-rpol:apply-policy-import-config; } - grouping authentication-key-group-config { - description - "This grouping defines ISIS authentication key configuration."; - - uses authentication-key-config; - - // TODO(robjs): Add crypto-algorithm after merge of authentication modules. - //leaf crypto-algorithm { - // type identityref { - // base oc-auth-types:CRYPTO_TYPE; - // } - // description - // "Authentication key cryptographic algorithm to be used for key encryption."; - //} - } - grouping isis-mpls-config { description "This grouping defines MPLS-related features in IS-IS"; @@ -1486,9 +1328,77 @@ module openconfig-isis { container authentication { description "This container defines ISIS authentication."; - uses isis-authentication-group; + uses isis-level-authentication-group; + } + } + + grouping isis-level-authentication-group { + description + "Grouping containing structural elements for authentication in IS-IS."; + + container config { + description + "Configuration parameters relating to IS-IS authentication."; + + uses isis-level-authentication-config; } + container state { + config false; + description + "Operational state parameters relating to IS-IS authentication."; + uses isis-level-authentication-config; + } + } + + grouping isis-level-authentication-config { + description + "Configuration leaves for IS-IS authentication."; + + leaf enabled { + type boolean; + default false; + description + "When this leaf is set to true, authentication of IS-IS PSNP, CSNP and + LSP packets is enabled using the authentication details specified in + the keychain in the sibling leaf. + + The simbling 'disable-' leaves can be used to override the value + of this leaf and disable authentication for a specific packet type."; + } + + leaf disable-csnp { + type boolean; + default false; + description + "When this leaf is set to true, authentication is disabled for CSNP + packets, overriding the value of the enabled leaf in this context."; + } + + leaf disable-psnp { + type boolean; + default false; + description + "When this leaf is set to true, authentication is disabled for PSNP + packets, overriding the value of the enabled leaf in this context."; + } + + leaf disable-lsp { + type boolean; + default false; + description + "When this leaf is set to true, authentication is disabled for LSP + packets, overriding the value of the enabled leaf in this context."; + } + + leaf keychain { + type oc-keychain:keychain-ref; + description + "Reference to the keychain that should be used for authenticating IS-IS + packets - the keychain may contain either a simple password, or + HMAC-MD5 key that is used for authenticating CSNP, PSNP and LSP packets + within the specified IS-IS level."; + } } grouping isis-interface-level-group { @@ -1630,13 +1540,13 @@ module openconfig-isis { } leaf neighbor-ipv4-address { - type inet:ipv4-address-no-zone; + type oc-inet:ipv4-address; description "ISIS Neighbor IPv4 address."; } leaf neighbor-ipv6-address { - type inet:ipv6-address-no-zone; + type oc-inet:ipv6-address; description "ISIS Neighbor IPv6 address."; } @@ -1691,18 +1601,12 @@ module openconfig-isis { reference "RFC4303. TLV 240."; } - leaf remaining-hold-time { - type uint16; - units seconds; - description - "Holding time in seconds for adjacency. This value is based on received - hello PDUs and the elapsed time since receipt."; - } - - leaf up-time { - type yang:timestamp; + leaf up-timestamp { + type oc-types:timeticks64; description - "Adjacency up time."; + "Time at which the adjacency transitioned into the up state, expressed + as number of nanoseconds since the Unix epoch (Jan 1, 1970 00:00:00 + UTC)."; } leaf multi-topology { @@ -1784,32 +1688,32 @@ module openconfig-isis { "Operational state parameters relating to LSP packet counters."; leaf received { - type yang:counter32; + type oc-yang:counter32; description "The number of the specified type of PDU received on the interface."; } leaf processed { - type yang:counter32; + type oc-yang:counter32; description "The number of the specified type of PDU received on the interface that have been processed by the local system."; } leaf dropped { - type yang:counter32; + type oc-yang:counter32; description "The number of the specified type of PDU received on the interface that have been dropped."; } leaf sent { - type yang:counter32; + type oc-yang:counter32; description "The number of the specified type of PDU that have been sent by the local system on the interface."; } leaf retransmit { - type yang:counter32; + type oc-yang:counter32; description "The number of the specified type of PDU that that have been retransmitted by the local system on the interface."; @@ -1917,7 +1821,7 @@ module openconfig-isis { "IS-IS counters that are relevant to the system IS-IS context."; leaf corrupted-lsps { - type yang:counter32; + type oc-yang:counter32; description "Number of corrupted in-memory LSPs detected. LSPs received from the wire with a bad checksum are silently dropped and not counted. LSPs @@ -1926,7 +1830,7 @@ module openconfig-isis { } leaf database-overloads { - type yang:counter32; + type oc-yang:counter32; description "Number of times the database has become overloaded. @@ -1934,27 +1838,27 @@ module openconfig-isis { } leaf manual-address-drop-from-areas { - type yang:counter32; + type oc-yang:counter32; description "Number of times a manual address has been dropped from area. MIB Entry: SysManAddrDropFromAreas."; } leaf exceed-max-seq-nums { - type yang:counter32; + type oc-yang:counter32; description "The number of times the system has attempted to exceed the maximum sequence number. MIB Entry: SysAttmptToExMaxSeqNums."; } leaf seq-num-skips { - type yang:counter32; + type oc-yang:counter32; description "Number of times a sequence number skip has occurred. MIB Entry: SysSeqNumSkips."; } leaf own-lsp-purges { - type yang:counter32; + type oc-yang:counter32; description "Number of times a zero-aged copy of the system's own LSP is received from some other node. @@ -1962,7 +1866,7 @@ module openconfig-isis { } leaf id-len-mismatch { - type yang:counter32; + type oc-yang:counter32; description "Number of times a PDU is received with a different value for ID field length from that of the receiving system. MIB Entry: @@ -1970,13 +1874,13 @@ module openconfig-isis { } leaf part-changes { - type yang:counter32; + type oc-yang:counter32; description "The number of partition changes detected. MIB Entry: SysPartChanges."; } leaf max-area-address-mismatches { - type yang:counter32; + type oc-yang:counter32; description "Number of times a PDU is received with a different value for MaximumAreaAddresses from that of the receiving system. MIB Entry: @@ -1984,26 +1888,26 @@ module openconfig-isis { } leaf auth-fails { - type yang:counter32; + type oc-yang:counter32; description "The number of authentication key failures. MIB Entry: SysAuthFails."; } leaf spf-runs { - type yang:counter32; + type oc-yang:counter32; description "The number of times SPF was ran at this level."; } leaf auth-type-fails { - type yang:counter32; + type oc-yang:counter32; description "The number of authentication type mismatches."; } leaf lsp-errors { - type yang:counter32; + type oc-yang:counter32; description "The number of received LSPs with errors."; } @@ -2028,28 +1932,28 @@ module openconfig-isis { interface or circuit."; leaf adj-changes { - type yang:counter32; + type oc-yang:counter32; description "Number of times an adjacency state change has occurred on this circuit. MIB Entry: CircAdjChanges."; } leaf init-fails { - type yang:counter32; + type oc-yang:counter32; description "Number of times initialization of this circuit has failed. This counts events such as PPP NCP failures. MIB Entry: CircInitFails."; } leaf rejected-adj { - type yang:counter32; + type oc-yang:counter32; description "Number of times an adjacency has been rejected on this circuit. MIB Entry: CircRejAdjs."; } leaf id-field-len-mismatches { - type yang:counter32; + type oc-yang:counter32; description "Number of times an IS-IS control PDU with an ID field length different from that for this system has been received. @@ -2057,7 +1961,7 @@ module openconfig-isis { } leaf max-area-address-mismatches { - type yang:counter32; + type oc-yang:counter32; description "Number of times an IS-IS control PDU with a max area address field different from that for this system has been received. MIB Entry: @@ -2065,7 +1969,7 @@ module openconfig-isis { } leaf auth-type-fails { - type yang:counter32; + type oc-yang:counter32; description "Number of times an IS-IS control PDU with an auth type field different from that for this system has been received. MIB Entry: @@ -2073,14 +1977,14 @@ module openconfig-isis { } leaf auth-fails { - type yang:counter32; + type oc-yang:counter32; description "Number of times an IS-IS control PDU with the correct auth type has failed to pass authentication validation. MIB Entry: CircAuthFails."; } leaf lan-dis-changes { - type yang:counter32; + type oc-yang:counter32; description "Number of times the Designated IS has changed on this circuit at this level. If the circuit is point to point, this count is zero. MIB Entry: diff --git a/release/models/keychain/openconfig-keychain.yang b/release/models/keychain/openconfig-keychain.yang index 200480ac9..f07200c08 100644 --- a/release/models/keychain/openconfig-keychain.yang +++ b/release/models/keychain/openconfig-keychain.yang @@ -32,7 +32,13 @@ module openconfig-keychain { which may be then referenced by other models such as routing protocol management."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; + + revision "2021-12-31" { + description + "Add keychain-ref type to allow for a resuable reference to a keychain."; + reference "0.2.0"; + } revision "2021-10-01" { description @@ -40,6 +46,15 @@ module openconfig-keychain { reference "0.1.0"; } + typedef keychain-ref { + type leafref { + path "/keychains/keychain/config/name"; + } + description + "A reference to a keychain defined on the system that can be used by + modules that require access to keychains."; + } + grouping valid-lifetime-config { description "This grouping defines key begin lifetime parameters."; From 4d0fb4a1b0088157f39789384e6adab93d6f9539 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 19 Jan 2022 16:01:50 -0500 Subject: [PATCH 012/372] Fix Modules and Submodules to have the same version string. (#1057) * Update CI to version 7 Co-authored-by: Rob Shakir --- cloudbuild.yaml | 2 +- .../openconfig-bgp-common-multiprotocol.yang | 20 ++++++++- .../bgp/openconfig-bgp-common-structure.yang | 20 ++++++++- release/models/bgp/openconfig-bgp-common.yang | 20 ++++++++- release/models/bgp/openconfig-bgp-errors.yang | 41 ++++++++++++++++++- release/models/bgp/openconfig-bgp-global.yang | 20 ++++++++- .../models/bgp/openconfig-bgp-neighbor.yang | 14 ++++++- .../models/bgp/openconfig-bgp-peer-group.yang | 7 +++- release/models/isis/openconfig-isis-lsp.yang | 8 +++- .../models/isis/openconfig-isis-routing.yang | 14 ++++++- release/models/isis/openconfig-isis.yang | 8 +++- release/models/mpls/openconfig-mpls-igp.yang | 26 +++++++++++- .../models/mpls/openconfig-mpls-static.yang | 26 +++++++++++- release/models/mpls/openconfig-mpls-te.yang | 4 +- .../openconfig-network-instance-l2.yang | 9 +++- .../openconfig-ospfv2-area-interface.yang | 8 +++- .../models/ospf/openconfig-ospfv2-area.yang | 14 ++++++- .../models/ospf/openconfig-ospfv2-common.yang | 14 ++++++- .../models/ospf/openconfig-ospfv2-global.yang | 14 ++++++- .../models/ospf/openconfig-ospfv2-lsdb.yang | 10 ++++- release/models/ospf/openconfig-ospfv2.yang | 6 +-- .../models/qos/openconfig-qos-elements.yang | 8 +++- .../models/qos/openconfig-qos-interfaces.yang | 8 +++- .../openconfig-rib-bgp-table-attributes.yang | 10 ++++- 24 files changed, 302 insertions(+), 29 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 014708beb..0305594db 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -48,7 +48,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v6*' | sort -V | tail -1) + branch=$(git tag -l 'v7*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index b97ecaa78..b0e9608d0 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,25 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "6.0.0"; + oc-ext:openconfig-version "7.0.0"; + + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "6.1.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "6.1.0"; + } revision "2019-07-10" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index a28588ddd..a8c98c993 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,25 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "6.0.0"; + oc-ext:openconfig-version "7.0.0"; + + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "6.1.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "6.1.0"; + } revision "2019-07-10" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 5aa36afe7..3460a6252 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,25 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "6.0.0"; + oc-ext:openconfig-version "7.0.0"; + + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "6.1.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "6.1.0"; + } revision "2019-07-10" { description diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index 86aad056e..cbcb53501 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,46 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "5.0.2"; + oc-ext:openconfig-version "5.3.1"; + + revision "2021-08-06" { + description + "Fix pattern regexes to allow full 4-byte private ASN range including + 42xxxxxxxx in extended communities + + Types impacted: + - bgp-ext-community-type"; + reference "5.3.1"; + } + + revision "2021-01-07" { + description + "Remove module extension oc-ext:regexp-posix by making pattern regexes + conform to RFC7950. + + Types impacted: + - bgp-std-community-type + - bgp-ext-community-type"; + reference "5.3.0"; + } + + revision "2020-06-30" { + description + "Add OpenConfig POSIX pattern extensions."; + reference "5.2.1"; + } + + revision "2020-06-17" { + description + "Add RFC5549 capability identity."; + reference "5.2.0"; + } + + revision "2020-03-24" { + description + "Add FlowSpec, BGP-LS and LSVR AFI-SAFI identities."; + reference "5.1.0"; + } revision "2018-11-21" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 150835596..6f8d76627 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,25 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "6.0.0"; + oc-ext:openconfig-version "7.0.0"; + + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "6.1.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "6.1.0"; + } revision "2019-07-10" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index dbdd765ff..3db42559d 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,19 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "6.1.0"; + oc-ext:openconfig-version "7.0.0"; + + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "6.1.1"; + } revision "2021-03-17" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 366b6d87d..094093a6f 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,8 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "6.1.1"; + oc-ext:openconfig-version "7.0.0"; + revision "2021-10-21" { + description + "Removal of top-level /bgp container"; + reference "7.0.0"; + } revision "2021-06-16" { description diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index e7df9a04c..455207c12 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.7.1"; + + revision "2022-01-19" { + description + "Align revisions across modules."; + reference "0.7.1"; + } revision "2021-12-31" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index ea6c4e435..f2223e0e9 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.7.1"; + + revision "2022-01-19" { + description + "Align revisions across modules."; + reference "0.7.1"; + } revision "2021-12-31" { description @@ -29,6 +35,12 @@ submodule openconfig-isis-routing { reference "0.7.0"; } + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "0.6.2"; + } + revision "2021-03-17" { description "Add bfd support without augmentation."; diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 0b0cab1d1..28c2ee300 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -53,7 +53,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.7.1"; + + revision "2022-01-19" { + description + "Align revisions across modules."; + reference "0.7.1"; + } revision "2021-12-31" { description diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index 9409138a5..0748671eb 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,31 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.0.1"; + oc-ext:openconfig-version "3.2.2"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "3.2.2"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "3.2.1"; + } + + revision "2021-03-24" { + description + "Add Metric bounds constraints for LSPs."; + reference "3.2.0"; + } + + revision "2019-03-26" { + description + "Add Pseudowire encapsulation."; + reference "3.1.0"; + } revision "2018-11-21" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index f3d051297..d0ebaf9fe 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,31 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.0.1"; + oc-ext:openconfig-version "3.2.2"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "3.2.2"; + } + + revision "2021-06-16" { + description + "Remove trailing whitespace"; + reference "3.2.1"; + } + + revision "2021-03-24" { + description + "Add Metric bounds constraints for LSPs."; + reference "3.2.0"; + } + + revision "2019-03-26" { + description + "Add Pseudowire encapsulation."; + reference "3.1.0"; + } revision "2018-11-21" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index cf30f7415..ceeba8a3c 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -29,12 +29,12 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.1.2"; + oc-ext:openconfig-version "3.2.2"; revision "2021-07-28" { description "Add prefix to qualify when statements."; - reference "3.1.2"; + reference "3.2.2"; } revision "2021-06-16" { diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 2a397be88..fa9ff14f7 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -23,7 +23,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "0.16.1"; + oc-ext:openconfig-version "0.16.2"; + + revision "2021-11-17" { + description + "Add prefix to qualification prefix to when statements + at identifier level."; + reference "0.16.2"; + } revision "2021-07-22" { description diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index fc0975a5d..ae981f9b9 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "0.3.1"; + } revision "2021-03-17" { description diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index 241cfd155..01ef3fa7b 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,19 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.2.2"; + oc-ext:openconfig-version "0.3.1"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "0.3.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "0.3.0"; + } revision "2019-11-28" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index e9a1e7e12..cd3e3dc9e 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,19 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.2.2"; + oc-ext:openconfig-version "0.3.1"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "0.3.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "0.3.0"; + } revision "2019-11-28" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 660f4a31a..90ffc09b5 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,19 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.2.2"; + oc-ext:openconfig-version "0.3.1"; + + revision "2021-07-28" { + description + "Add prefix to qualify when statements."; + reference "0.3.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "0.3.0"; + } revision "2019-11-28" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 0400bb66b..e2595109d 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,12 +22,18 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.2.3"; + oc-ext:openconfig-version "0.3.1"; revision "2021-07-28" { description "Add prefix to qualify when statements."; - reference "0.2.3"; + reference "0.3.1"; + } + + revision "2021-03-17" { + description + "Add bfd support without augmentation."; + reference "0.3.0"; } revision "2019-11-28" { diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index cce6041cb..045983da7 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,18 +34,18 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.2.4"; + oc-ext:openconfig-version "0.3.1"; revision "2021-07-28" { description "Add prefix to qualify when statements."; - reference "0.2.4"; + reference "0.3.1"; } revision "2021-03-17" { description "Add bfd support without augmentation."; - reference "0.2.3"; + reference "0.3.0"; } revision "2019-11-28" { diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 9af4d7b89..e21eb127f 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2021-08-28" { + description + "Revision updating memory management profile WRED and RED configuration."; + reference "0.5.0"; + } revision "2021-04-28" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 0c6db426b..1adde5e74 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2021-08-28" { + description + "Revision updating memory management profile WRED and RED configuration."; + reference "0.5.0"; + } revision "2021-04-28" { description diff --git a/release/models/rib/openconfig-rib-bgp-table-attributes.yang b/release/models/rib/openconfig-rib-bgp-table-attributes.yang index ec1c73890..ddd51c169 100644 --- a/release/models/rib/openconfig-rib-bgp-table-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-table-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-table-attributes { "This submodule contains common data definitions for data related to a RIB entry, or RIB table."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + + revision "2019-10-15" { + description + "Change imported segment-routing module."; + reference "0.7.0"; + } revision "2019-04-25" { description @@ -134,4 +140,4 @@ submodule openconfig-rib-bgp-table-attributes { } -} \ No newline at end of file +} From 6353cd9ebe15066edca976f83e67bbf3561e632a Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 24 Jan 2022 10:52:42 -0800 Subject: [PATCH 013/372] * (M) yang/aft/openconfig-aft-common.yang (#1070) * * (M) yang/aft/openconfig-aft-common.yang - Adding pop-top-label in NH AFT entry state * (M) yang/aft/openconfig-aft-common.yang - update version to 0.9.0 * (M) yang/aft/openconfig-aft-common.yang - update version to 0.9.0 * (M) yang/aft/openconfig-aft-common.yang - update version to 0.9.0 * (M) yang/aft/openconfig-aft-common.yang - update version to 0.9.0 * (M) yang/aft/openconfig-aft-common.yang - update version to 0.9.0 * (M) yang/aft/openconfig-aft-common.yang - update version to 0.9.0 * Origin: openconfig/public#536 * revert leaf config-nh-index --- release/models/aft/openconfig-aft-common.yang | 19 ++++++++++++++++++- .../models/aft/openconfig-aft-ethernet.yang | 8 +++++++- release/models/aft/openconfig-aft-ipv4.yang | 8 +++++++- release/models/aft/openconfig-aft-ipv6.yang | 8 +++++++- release/models/aft/openconfig-aft-mpls.yang | 8 +++++++- release/models/aft/openconfig-aft-pf.yang | 8 +++++++- release/models/aft/openconfig-aft.yang | 8 +++++++- 7 files changed, 60 insertions(+), 7 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 65faad779..d0f248b13 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -22,7 +22,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description @@ -262,6 +268,17 @@ submodule openconfig-aft-common { network instance."; } + leaf pop-top-label { + type boolean; + default false; + description + "Flag that controls pop action, i.e., the top-most MPLS label + should be popped from the packet when switched by the system. + + The top-most MPLS label associated with pop action is equal to + the label key used in 'mpls' AFT 'label-entry' list."; + } + leaf-list pushed-mpls-label-stack { type oc-mplst:mpls-label; ordered-by user; diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 647a4beae..4ad86608d 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index 463632603..cfa2be090 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index ab152b82f..976f609a1 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 46ab20e00..2afe91c06 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index acf9e54c8..73418df5a 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 3065ec027..40ae251e7 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -40,7 +40,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-12-09" { + description + "Add pop-top-label in NH AFT entry state"; + reference "0.9.0"; + } revision "2021-08-06" { description From 47fa8bf83a99b430eb3e1e75832ea4f7d9011a59 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 25 Jan 2022 14:09:56 -0500 Subject: [PATCH 014/372] Add gRIBI as an install protocol. (#1073) * (M) yang/policy/openconfig-policy-types.yang - add an INSTALL_PROTOCOL_TYPE for gRIBI (github.com/openconfig/gribi) Co-authored-by: Yini Wang Co-authored-by: yini101 <86263319+yini101@users.noreply.github.com> --- release/models/policy/openconfig-policy-types.yang | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/release/models/policy/openconfig-policy-types.yang b/release/models/policy/openconfig-policy-types.yang index 46efef7f4..48646bd93 100644 --- a/release/models/policy/openconfig-policy-types.yang +++ b/release/models/policy/openconfig-policy-types.yang @@ -24,7 +24,13 @@ module openconfig-policy-types { policy. It can be imported by modules that contain protocol- specific policy conditions and actions."; - oc-ext:openconfig-version "3.1.1"; + oc-ext:openconfig-version "3.2.1"; + + revision "2021-12-10" { + description + "Add INSTALL_PROTOCOL_TYPE gRIBI."; + reference "3.2.1"; + } revision "2018-11-21" { description @@ -228,4 +234,9 @@ module openconfig-policy-types { reference "RFC 3376"; } + + identity GRIBI { + base INSTALL_PROTOCOL_TYPE; + description "gRPC Routing Information Base Interface"; + } } From 6fc6e78ec611451436b34d4412a6c581e40707be Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 25 Jan 2022 14:56:21 -0500 Subject: [PATCH 015/372] Add a CODEOWNERS for openconfig/public. * (A) .github/CODEOWNERS - Initialise CODEOWNERS in openconfig/public repo. --- .github/CODEOWNERS | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..e96fc6e6c --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,8 @@ +# Definition of code OWNERS for the openconfig/public repository. +# +# default approvers: +* @aashaikh @robshakir + +# the release/models directory (all YANG content) +# is maintained by the public-writers OpenConfig team. +/release/models/ @openconfig/public-writers From 1a091ba60f8c89c34be19c1d2a7e70ade6921e6f Mon Sep 17 00:00:00 2001 From: Xiao Wang <39514181+xw-g@users.noreply.github.com> Date: Mon, 31 Jan 2022 13:02:58 -0800 Subject: [PATCH 016/372] Remove outdated list of models in documentation. (#572) * (M) release/README.md - Remove outdated list of models from README file such that we do not have a stale list. --- release/README.md | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/release/README.md b/release/README.md index 775726db1..0fb695792 100644 --- a/release/README.md +++ b/release/README.md @@ -4,21 +4,7 @@ The ```release/``` directory contains published OpenConfig models, documentation ## Models -Published versions of OpenConfig modules can be found in the ```release/models``` directory. The current released model set is: - - * `bgp` - covering configuration and state relating to Border Gateway Protocol (BGP), including multi-protocol extensions. The `openconfig-bgp-policy` module provides augmentations to the OpenConfig routing policy framework to allow policies to utilise BGP-specific routing attributes. - * `interfaces` - which provides configuration and state for physical and logical device interfaces and associated IP addressing. Extension modules provide configuration for aggregate interfaces (`openconfig-if-aggregate`) and Ethernet-specific interface parameters (`openconfig-if-ethernet`). - * `local-routing` - allowing interaction with the configuration and operational state relating to static and aggregate routes which are generated by a device locally. - * `mpls` - comprehensive data model for configuration and operational - state of MPLS/TE, including signaling protocols such as RSVP, LDP, and - segment routing. - * `optical-transport` - providing a configuration and state model for terminal optical devices within a DWDM system, including both client- and line-side parameters. - * `policy` - a framework for routing policies to be expressed allowing matching of particular routing elements or sets, and actions to be performed on them. Other models may augment this model to add protocol-specific types, and reference policies defined within it. - * `rib` - a data model representing the BGP-4 routing information base (RIB) contents. Extensions to the 'base' RIB model adding additional data elements of operational use are defined in `openconfig-rib-bgp-ext`. - * `telemetry` - describing state and configuration parameters relating to a device's ability to stream telemetry information to a network management system. - * `vlan` - a model allowing the configuration and state retrieval of parameters corresponding to 802.1Q VLANs on a device - including the creation of routed interfaces corresponding to those VLANs. - * `network-instance` - a model defining configuration and operational state parameters for a Layer 2 or Layer 3 forwarding instance on a network element. - * `rpc` - defines the set of operations that are expected between a network element and a device supporting OpenConfig models. +Published versions of OpenConfig modules can be found in the ```release/models``` directory. Generic type definitions which OpenConfig utilises can be found in the `openconfig-types` module. From 7ecde820d0c82dd9f8ff5edbb518b9bfd7c46c14 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 1 Feb 2022 16:26:56 -0800 Subject: [PATCH 017/372] Add performance monitors for ZR transceivers. * (M) release/models/optical-transport/openconfig-terminal-device.yang * (M) release/models/optical-transport/openconfig-transport-types.yang * (M) release/models/platform/openconfig-platform-transceiver.yang * (M) release/models/platform/openconfig-platform-types.yang - Add performance monitoring statistics for 400G-ZR transceivers to optical and transceiver models. --- .../openconfig-terminal-device.yang | 191 ++++++++++++++++-- .../openconfig-transport-types.yang | 162 ++++++++++++++- .../openconfig-platform-transceiver.yang | 72 ++++++- .../platform/openconfig-platform-types.yang | 60 +++++- 4 files changed, 469 insertions(+), 16 deletions(-) diff --git a/release/models/optical-transport/openconfig-terminal-device.yang b/release/models/optical-transport/openconfig-terminal-device.yang index 4c77457ef..bf17ed39c 100644 --- a/release/models/optical-transport/openconfig-terminal-device.yang +++ b/release/models/optical-transport/openconfig-terminal-device.yang @@ -77,7 +77,15 @@ module openconfig-terminal-device { ports per linecard, separate linecards for client and line ports, etc.)."; - oc-ext:openconfig-version "1.8.0"; + oc-ext:openconfig-version "1.9.0"; + + revision "2021-07-29" { + description + "Add several coherent performance monitors to optical channel. + Re-group and add PHY-related performance monitors to optical + channel and logical channel."; + reference "1.9.0"; + } revision "2021-02-23" { description @@ -245,6 +253,13 @@ module openconfig-terminal-device { uses oc-eth:ethernet-interface-state-counters; uses terminal-ethernet-protocol-state-counters; + uses terminal-phy-protocol-stats { + description + "When 400ZR/ZR+ transceivers are plugged in switches or routers, + this grouping will be attached to logical channel with Ethernet + protocol framing, in order to involve host-side fec-related + error performances."; + } } grouping terminal-ethernet-protocol-state-counters { @@ -261,7 +276,7 @@ module openconfig-terminal-device { "The number of received bit interleaved parity (BIP) errors at the physical coding sublayer (PCS). If the interface consists of multiple lanes, this will be the sum of all - errors on the lane"; + errors on the lane"; } leaf in-pcs-errored-seconds { @@ -547,12 +562,6 @@ module openconfig-terminal-device { reference "ITU-T Rec. G.826"; } - leaf fec-uncorrectable-blocks { - type yang:counter64; - description - "The number of blocks that were uncorrectable by the FEC"; - } - leaf fec-uncorrectable-words { type yang:counter64; description @@ -578,10 +587,17 @@ module openconfig-terminal-device { } } - grouping terminal-otn-protocol-multi-stats { + grouping terminal-phy-protocol-stats { description - "Multi-value statistics containers for logical channels using - OTN framing (e.g., max, min, avg, instant)"; + "Counters and multi-value statistics for FEC-related error + performance"; + + leaf fec-uncorrectable-blocks { + type yang:counter64; + description + "The number of blocks or frames that were uncorrectable by + the FEC"; + } container pre-fec-ber { description @@ -656,7 +672,11 @@ module openconfig-terminal-device { "Remote defect indication (RDI) message received"; } uses terminal-otn-protocol-counter-stats; - uses terminal-otn-protocol-multi-stats; + uses terminal-phy-protocol-stats { + description + "This grouping may be used when the logical-channel-type + is 'PROT_OTN."; + } } grouping terminal-otn-protocol-top { @@ -1271,7 +1291,6 @@ module openconfig-terminal-device { // leaf to be a leafref to a r/o leaf. } - leaf line-port { type leafref { path "/oc-platform:components/oc-platform:component/" + @@ -1346,6 +1365,152 @@ module openconfig-terminal-device { uses oc-types:avg-min-max-instant-stats-precision2-dB; } + + container modulator-bias-xi { + description + "The bias on in-phase path and Polarization X of + the coherent modulator. This is represented as a percentage + with 2 decimal precision. This term is defined by OIF + Implementation Agreement for Coherent CMIS. Values include + the instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target is + expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + + container modulator-bias-xq { + description + "The bias on quadrature path and Polarization X of + the coherent modulator. This is represented as a percentage + with 2 decimal precision. This term is defined by OIF + Implementation Agreement for Coherent CMIS. Values include + the instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target is + expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + + container modulator-bias-yi { + description + "The bias on in-phase path and Polarization Y of + the coherent modulator. This is represented as a percentage + with 2 decimal precision. This term is defined by OIF + Implementation Agreement for Coherent CMIS. Values include + the instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target is + expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + + container modulator-bias-yq { + description + "The bias on quadrature path and Polarization Y of + the coherent modulator. This is represented as a percentage + with 2 decimal precision. This term is defined by OIF + Implementation Agreement for Coherent CMIS. Values include + the instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target is + expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + + container modulator-bias-x-phase { + description + "The X-Phase bias of the coherent modulator. This is + represented as a percentage with 2 decimal precision. This + term is defined by OIF Implementation Agreement for + Coherent CMIS. Values include the instantaneous, average, + minimum, and maximum statistics. If avg/min/max statistics + are not supported, the target is expected to just supply + the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + + container modulator-bias-y-phase { + description + "The Y-Phase bias of the coherent modulator. This is + represented as a percentage with 2 decimal precision. This + term is defined by OIF Implementation Agreement for + Coherent CMIS. Values include the instantaneous, average, + minimum, and maximum statistics. If avg/min/max statistics + are not supported, the target is expected to just supply + the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + + container osnr { + description + "Optical signal to noise ratio at 12.5GHz noise bandwidth + in dB with two decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target + is expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-types:avg-min-max-instant-stats-precision2-dB; + } + + container carrier-frequency-offset { + description + "Carrier frequency offset in MHz with 1 decimal precision. + Values include the instantaneous, average, minimum, and + maximum statistics. If avg/min/max statistics are not supported, + the target is expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision1-mhz; + } + + container sop-roc { + description + "State-of-polarization rate-of-change (SOP-ROC) in krad/s with 1 + decimal precision. This term is defined by OIF Implementation + Agreement for Coherent CMIS. Values include the instantaneous, + average, minimum, and maximum statistics. If avg/min/max + statistics are not supported, the target is expected to just + supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-opt-types:avg-min-max-instant-stats-precision1-krads; + } + + container modulation-error-ratio { + description + "Modulation error ratio in dB with two decimal precision. Values + include the instantaneous, average, minimum, and maximum statistics. + If avg/min/max statistics are not supported, the target is + expected to just supply the instant value."; + + reference "IA OIF-C-CMIS-01.1 Table 7"; + + uses oc-types:avg-min-max-instant-stats-precision2-dB; + } + + uses terminal-phy-protocol-stats { + description + "When there is no OTN framing e.g. 400ZR, this grouping will be used."; + } } grouping terminal-optical-channel-top { diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index 549d50a26..af584c509 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.14.0"; + oc-ext:openconfig-version "0.15.0"; + + revision "2021-07-29" { + description + "Add several avg-min-max-instant-stats groupings"; + reference "0.15.0"; + } revision "2021-03-22" { description @@ -434,6 +440,160 @@ module openconfig-transport-types { uses oc-types:min-max-time; } + grouping avg-min-max-instant-stats-precision1-mhz { + description + "Common grouping for recording frequency values in MHz with + 1 decimal precision. Values include the instantaneous, average, + minimum, and maximum statistics. Statistics are computed and + reported based on a moving time interval (e.g., the last 30s). + If supported by the device, the time interval over which the + statistics are computed, and the times at which the minimum and + maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 1; + } + units MHz; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 1; + } + units MHz; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 1; + } + units MHz; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 1; + } + units MHz; + description + "The maximum value of the statistic over the time interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping avg-min-max-instant-stats-precision1-krads { + description + "Common grouping for recording kiloradian per second (krad/s) values + with 1 decimal precision. Values include the instantaneous, + average, minimum, and maximum statistics. Statistics are computed + and reported based on a moving time interval (e.g., the last 30s). + If supported by the device, the time interval over which the + statistics are computed, and the times at which the minimum and + maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 1; + } + units "krad/s"; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 1; + } + units "krad/s"; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 1; + } + units "krad/s"; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 1; + } + units "krad/s"; + description + "The maximum value of the statistic over the time interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + grouping avg-min-max-instant-stats-precision2-pct { + description + "Common grouping for percentage statistics with 2 decimal precision. + Values include the instantaneous, average, minimum, and maximum + statistics. Statistics are computed and reported based on a moving + time interval (e.g., the last 30s). If supported by the device, + the time interval over which the statistics are computed, and the + times at which the minimum and maximum values occurred, are also + reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units percentage; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units percentage; + description + "The arithmetic mean value of the statistic over the + time interval."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units percentage; + description + "The minimum value of the statistic over the time interval."; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units percentage; + description + "The maximum value of the statistic over the time interval."; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + + // identity statements identity TRIBUTARY_PROTOCOL_TYPE { diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index 344f8e9b4..c70a4fdda 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -65,7 +65,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2021-07-29" { + description + "Add several media-lane-based VDM defined by CMIS to physical channel"; + reference "0.9.0"; + } revision "2021-02-23" { description @@ -288,6 +294,59 @@ module openconfig-platform-transceiver { channel component and the module-functional-type is TYPE_DIGITAL_COHERENT_OPTIC this grouping will NOT be used."; + leaf laser-age { + type oc-types:percentage; + description + "Laser age (0% at beginning of life, 100% end of life) in integer + percentage. This term is defined by Common Management Interface + Specification (CMIS)."; + + reference "QSFP-DD CMIS 5.0 Table 8-122"; + } + + container laser-temperature { + description + "Laser temperature for the cooled laser in degrees Celsius with 1 + decimal precision. This term is defined by Common Management + Interface Specification (CMIS). Values include the instantaneous, + average, minimum, and maximum statistics. If avg/min/max statistics + are not supported, the target is expected to just supply the + instant value."; + + reference "QSFP-DD CMIS 5.0 Table 8-122"; + + uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius; + } + + container target-frequency-deviation { + description + "The difference in MHz with 1 decimal precision between the target + center frequency and the actual current center frequency . This term + is defined by Common Management Interface Specification (CMIS) and + referred to as laser frequency error or laser ferquency deviation. + Values include the instantaneous, average, minimum, and maximum + statistics. If avg/min/max statistics are not supported, the target + is expected to just supply the instant value."; + + reference "QSFP-DD CMIS 5.0 Section Table 8-122"; + + uses oc-opt-types:avg-min-max-instant-stats-precision1-mhz; + } + + container tec-current { + description + "The amount of current flowing to the TC of a cooled laser in percentage + with 2 decimal precision. This term is defined by Common Management + Interface Specification (CMIS). Values include the instantaneous, + average, minimum, and maximum statistics. If avg/min/max statistics + are not supported, the target is expected to just supply the instant + value."; + + reference "QSFP-DD CMIS 5.0 Table 8-122"; + + uses oc-opt-types:avg-min-max-instant-stats-precision2-pct; + } + uses physical-channel-state-extended { when "../../../state/module-functional-type = 'oc-opt-types:TYPE_STANDARD_OPTIC'" { description @@ -614,6 +673,17 @@ module openconfig-platform-transceiver { uses oc-opt-types:avg-min-max-instant-stats-precision18-ber; } + container supply-voltage { + description + "Supply voltage to the transceiver in volts with 2 decimal + precision. Values include the instantaneous, average, minimum, + and maximum statistics. If avg/min/max statistics are not + supported, the target is expected to just supply the instant + value."; + + uses oc-platform-types:avg-min-max-instant-stats-precision2-volts; + } + uses optical-power-state; } diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index aa7f697a1..c25f026a1 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2021-07-29" { + description + "Add several avg-min-max-instant-stats groupings"; + reference "1.2.0"; + } revision "2021-01-18" { description @@ -136,6 +142,58 @@ module openconfig-platform-types { uses oc-types:min-max-time; } + grouping avg-min-max-instant-stats-precision2-volts { + description + "Common grouping for recording voltage values in + volts with 2 decimal precision. Values include the + instantaneous, average, minimum, and maximum statistics. + If supported by the device, the time interval over which + the statistics are computed, and the times at which the + minimum and maximum values occurred, are also reported."; + + leaf instant { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The instantaneous value of the statistic."; + } + + leaf avg { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The arithmetic mean value of the statistic over the + sampling period."; + } + + leaf min { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The minimum value of the statistic over the sampling + period"; + } + + leaf max { + type decimal64 { + fraction-digits 2; + } + units volts; + description + "The maximum value of the statistic over the sampling + period"; + } + + uses oc-types:stat-interval-state; + uses oc-types:min-max-time; + } + // identity statements identity OPENCONFIG_HARDWARE_COMPONENT { description From 276ec8d7aab6b36d8b4f25982ed1fda82a593ff5 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 10 Feb 2022 09:13:08 -0500 Subject: [PATCH 018/372] Fix typo in hw-mac-address description. * (M) yang/interfaces/openconfig-if-ethernet.yang - Fix typo in hardware MAC address description. Co-authored-by: Darren Loher Co-authored-by: @sfuhrm --- release/models/interfaces/openconfig-if-ethernet.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ethernet.yang b/release/models/interfaces/openconfig-if-ethernet.yang index 202d75be2..b3dd9d4dd 100644 --- a/release/models/interfaces/openconfig-if-ethernet.yang +++ b/release/models/interfaces/openconfig-if-ethernet.yang @@ -25,7 +25,13 @@ module openconfig-if-ethernet { "Model for managing Ethernet interfaces -- augments the OpenConfig model for interface configuration and state."; - oc-ext:openconfig-version "2.12.0"; + oc-ext:openconfig-version "2.12.1"; + + revision "2021-07-20" { + description + "Fix typo in hardware MAC address description."; + reference "2.12.1"; + } revision "2021-07-07" { description @@ -585,7 +591,7 @@ module openconfig-if-ethernet { leaf hw-mac-address { type oc-yang:mac-address; description - "Represenets the 'burned-in', or system-assigned, MAC + "Represents the 'burned-in', or system-assigned, MAC address for the Ethernet interface."; } From 4a8a67e4f027673740f8e9132ec38923fd2cc274 Mon Sep 17 00:00:00 2001 From: "@michael-a-wong" Date: Thu, 10 Feb 2022 13:19:59 -0500 Subject: [PATCH 019/372] Applied PR #477 from public (Michael Wong ) (#1044) Co-authored-by: Darren Loher --- .../openconfig-platform-pipeline-counters.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index 4159edc5a..92faee755 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "0.2.1"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2022-01-19" { + description + "Fixed typo for aggregate field."; + reference "0.2.1"; + } + revision "2021-10-16" { description "Update pipeline error counters to allow for multiple errors @@ -794,7 +800,7 @@ module openconfig-platform-pipeline-counters { due to DF bit."; } - leaf lookup-aggregte { + leaf lookup-aggregate { type oc-yang:counter64; description "Packets dropped due to aggregate lookup drop counters - this counter From 8c2fb0575a6de38670ef0f52a82a05ed32e92f9c Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 10 Feb 2022 17:52:32 -0500 Subject: [PATCH 020/372] Add MPLS-in-UDP and GUE decap actions to policy-forwarding. (#1072) * Add decapsulate-gue and decapsulate-gre PF actions. * (M) policy-forwarding/openconfig-pf-forwarding-policies.yang - Added MPLS-in-UDP decapsulation action [RFC 7510] - Added Generic UDP Encapsulation (GUE) decapsulation action [https://datatracker.ietf.org/doc/draft-ietf-intarea-gue/] * Bump version of policy-forwarding module. * Merge updates from openconfig/public. * Clean up trailing whitespace. Co-authored-by: Dan Ameme --- .../openconfig-pf-forwarding-policies.yang | 28 ++++++++++++++++++- .../openconfig-pf-interfaces.yang | 8 +++++- .../openconfig-pf-path-groups.yang | 8 +++++- .../openconfig-policy-forwarding.yang | 8 +++++- 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang index 54315ddb4..700fc9180 100644 --- a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang +++ b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang @@ -21,7 +21,13 @@ submodule openconfig-pf-forwarding-policies { "This submodule contains configuration and operational state relating to the definition of policy-forwarding policies."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2022-01-25" { + description + "Add GUE and MPLS-in-UDP decapsulation actions."; + reference "0.5.0"; + } revision "2021-08-06" { description @@ -300,6 +306,26 @@ submodule openconfig-pf-forwarding-policies { should be forwarded to the next-hop IP address, bypassing any lookup on the local system."; } + + leaf decapsulate-mpls-in-udp { + type boolean; + default false; + description + "When this leaf is set to true, the local system should remove + the UDP header from the packet matching the rule. + Following the decapsulation it should subsequently forward the + encapsulated packet according to the underlying MPLS label."; + } + + leaf decapsulate-gue { + type boolean; + default false; + description + "When this leaf is set to true, the local system should remove + the Generic UDP Encapsulation (GUE) header from the packet matching + the rule. Following the decapsulation it should subsequently forward the + encapsulated packet according to the underlying IPv4 or IPv6 header."; + } } grouping pf-forwarding-policy-action-encapsulate-gre { diff --git a/release/models/policy-forwarding/openconfig-pf-interfaces.yang b/release/models/policy-forwarding/openconfig-pf-interfaces.yang index 0bd5aa2a1..ba40fd5e9 100644 --- a/release/models/policy-forwarding/openconfig-pf-interfaces.yang +++ b/release/models/policy-forwarding/openconfig-pf-interfaces.yang @@ -19,7 +19,13 @@ submodule openconfig-pf-interfaces { "This submodule contains groupings related to the association between interfaces and policy forwarding rules."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2022-01-25" { + description + "Add GUE and MPLS-in-UDP decapsulation actions."; + reference "0.5.0"; + } revision "2021-08-06" { description diff --git a/release/models/policy-forwarding/openconfig-pf-path-groups.yang b/release/models/policy-forwarding/openconfig-pf-path-groups.yang index f8cad6029..eff688954 100644 --- a/release/models/policy-forwarding/openconfig-pf-path-groups.yang +++ b/release/models/policy-forwarding/openconfig-pf-path-groups.yang @@ -18,7 +18,13 @@ submodule openconfig-pf-path-groups { forwarding entities together to be used as policy forwarding targets."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2022-01-25" { + description + "Add GUE and MPLS-in-UDP decapsulation actions."; + reference "0.5.0"; + } revision "2021-08-06" { description diff --git a/release/models/policy-forwarding/openconfig-policy-forwarding.yang b/release/models/policy-forwarding/openconfig-policy-forwarding.yang index 476387502..eec3b1d36 100644 --- a/release/models/policy-forwarding/openconfig-policy-forwarding.yang +++ b/release/models/policy-forwarding/openconfig-policy-forwarding.yang @@ -81,7 +81,13 @@ module openconfig-policy-forwarding { The forwarding action of the corresponding policy is set to PATH_GROUP and references the configured group of LSPs."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2022-01-25" { + description + "Add GUE and MPLS-in-UDP decapsulation actions."; + reference "0.5.0"; + } revision "2021-08-06" { description From 6920ea13cc49f2dd10dbf1061f0b26862dd0a5ab Mon Sep 17 00:00:00 2001 From: Rebecca Paz Date: Tue, 1 Mar 2022 13:50:07 -0500 Subject: [PATCH 021/372] Add Hello PDU padding type to IS-IS global configuration. (#593) Co-authored-by: Rebecca Paz --- release/models/isis/openconfig-isis-lsp.yang | 8 +++++++- .../models/isis/openconfig-isis-routing.yang | 8 +++++++- release/models/isis/openconfig-isis.yang | 19 ++++++++++++++++--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 455207c12..42001ff00 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.7.1"; + oc-ext:openconfig-version "0.8.0"; + + revision "2022-02-24" { + description + "Add Hello PDU padding type to IS-IS global configuration."; + reference "0.8.0"; + } revision "2022-01-19" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index f2223e0e9..b9eaa5235 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "0.7.1"; + oc-ext:openconfig-version "0.8.0"; + + revision "2022-02-24" { + description + "Add Hello PDU padding type to IS-IS global configuration."; + reference "0.8.0"; + } revision "2022-01-19" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 28c2ee300..daf6263b0 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -53,7 +53,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "0.7.1"; + oc-ext:openconfig-version "0.8.0"; + + revision "2022-02-24" { + description + "Add Hello PDU padding type to IS-IS global configuration."; + reference "0.8.0"; + } revision "2022-01-19" { description @@ -166,7 +172,7 @@ module openconfig-isis { grouping isis-global-config { description - "This grouping defines lobal configuration options for ISIS router."; + "This grouping defines global configuration options for ISIS router."; // multi-instance leaf instance { @@ -234,6 +240,13 @@ module openconfig-isis { "When set to true, IS will always flood the LSP that triggered an SPF before the router actually runs the SPF computation."; } + + leaf hello-padding { + type oc-isis-types:hello-padding-type; + default "STRICT"; + description + "Controls the padding type for IS-IS Hello PDUs on a global level."; + } } grouping admin-config { @@ -575,7 +588,7 @@ module openconfig-isis { leaf hello-padding { type oc-isis-types:hello-padding-type; description - "This leaf controls padding type for IS-IS Hello PDUs."; + "Controls the padding type for IS-IS Hello PDUs."; } leaf circuit-type { From 705bc43ccf3c0da50de8bf74a1158ded442ec3d8 Mon Sep 17 00:00:00 2001 From: Greg Dennis <5436032+greg-dennis@users.noreply.github.com> Date: Tue, 1 Mar 2022 16:47:19 -0500 Subject: [PATCH 022/372] Add VLAN ID to 'flow' ingress tracking values. (#586) * (M) release/models/ate/openconfig-ate-flow.yang - Add VLAN ID to ingress tracking values that can be used for flows. --- release/models/ate/openconfig-ate-flow.yang | 25 +++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/release/models/ate/openconfig-ate-flow.yang b/release/models/ate/openconfig-ate-flow.yang index f52495f66..49a4f8e18 100644 --- a/release/models/ate/openconfig-ate-flow.yang +++ b/release/models/ate/openconfig-ate-flow.yang @@ -9,6 +9,7 @@ module openconfig-ate-flow { import openconfig-types { prefix "oc-types"; } import openconfig-inet-types { prefix "oc-inet"; } import openconfig-mpls-types { prefix "oc-mplst"; } + import openconfig-vlan-types { prefix "oc-vlan"; } organization "OpenConfig working group"; @@ -23,7 +24,13 @@ module openconfig-ate-flow { stream of packets whose definition is outside of the context of this module."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "0.3.0"; + + revision 2022-02-16 { + description + "Add VLAN ID to ingress tracked values."; + reference "0.3.0"; + } revision 2019-08-07 { description @@ -161,6 +168,12 @@ module openconfig-ate-flow { "The destination IPv6 value of the traffic header."; } + leaf vlan-id { + type oc-vlan:vlan-id; + description + "The VLAN ID of the traffic header."; + } + leaf filter { type string; description @@ -252,7 +265,7 @@ module openconfig-ate-flow { fields to the flow statistics specific to frames that match that combination."; - key "src-port dst-port mpls-label src-ipv4 dst-ipv4 src-ipv6 dst-ipv6"; + key "src-port dst-port mpls-label src-ipv4 dst-ipv4 src-ipv6 dst-ipv6 vlan-id"; leaf src-port { type leafref { @@ -310,6 +323,14 @@ module openconfig-ate-flow { "The dst IPv6 value of the traffic header."; } + leaf vlan-id { + type leafref { + path "../state/vlan-id"; + } + description + "The VLAN ID value of the traffic header."; + } + container state { config false; From 536df7175946bf0d6638b9450b3efd6bb9fa3eed Mon Sep 17 00:00:00 2001 From: nikhilgArista Date: Thu, 3 Mar 2022 22:30:34 +0530 Subject: [PATCH 023/372] Add the simple key authentication support in IS-IS model (#584) * (M) release/models/keychain/openconfig-keychain-types.yang - Remove identity NONE from the AUTH_TYPE identity. The auth type can be either simplekey or keychain. The no auth can be specified by setting the enabled leaf to false * (M) release/models/isis/... - Add three new leaves 'auth-mode', 'auth-password' and 'auth-type' under isis/levels/level/authentication/ and isis/interfaces/interface/authentication auth-mode leaf specifies the type of the authentication which can be either TEXT or MD5. The auth-password leaf specifies the authentication key used in the IS-IS PDUs. The auth-type leaf specifies the type of authentication (simplekey vs keychain). --- release/models/isis/openconfig-isis-lsp.yang | 8 ++- .../models/isis/openconfig-isis-routing.yang | 8 ++- .../models/isis/openconfig-isis-types.yang | 27 ++++++++- release/models/isis/openconfig-isis.yang | 59 +++++++++++++++++-- .../keychain/openconfig-keychain-types.yang | 14 ++--- 5 files changed, 102 insertions(+), 14 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 42001ff00..ad31fed9e 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-03-01" { + description + "Add simple key authentication support."; + reference "0.9.0"; + } revision "2022-02-24" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index b9eaa5235..d3f02f9aa 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-03-01" { + description + "Add simple authentication key support."; + reference "0.9.0"; + } revision "2022-02-24" { description diff --git a/release/models/isis/openconfig-isis-types.yang b/release/models/isis/openconfig-isis-types.yang index 3e8628c11..eb33a4ea3 100644 --- a/release/models/isis/openconfig-isis-types.yang +++ b/release/models/isis/openconfig-isis-types.yang @@ -20,7 +20,13 @@ module openconfig-isis-types { "This module contains general data definitions for use in ISIS YANG model."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2022-02-11" { + description + "Add simple authentication key support."; + reference "0.6.0"; + } revision "2021-08-12" { description @@ -179,6 +185,25 @@ module openconfig-isis-types { "Base identify type for IPv6 address family"; } + identity AUTH_MODE { + description + "Base identify to define the authentication mode"; + } + + identity TEXT { + base AUTH_MODE; + description + "Simple Text Authentication"; + reference "RFC1195"; + } + + identity MD5 { + base AUTH_MODE; + description + "HMAC-MD5 Authentication"; + reference "RFC5304"; + } + // typedef statements typedef level-type { type enumeration { diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index daf6263b0..d7c18eb25 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -18,6 +18,7 @@ module openconfig-isis { import openconfig-segment-routing { prefix "oc-sr"; } import openconfig-bfd { prefix "oc-bfd"; } import openconfig-keychain { prefix "oc-keychain"; } + import openconfig-keychain-types { prefix "oc-keychain-types"; } // Include submodules: // IS-IS LSP is the LSDB for IS-IS. @@ -53,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-03-01" { + description + "Add simple authentication key support."; + reference "0.9.0"; + } revision "2022-02-24" { description @@ -275,6 +282,42 @@ module openconfig-isis { } } + grouping isis-authentication-type-config { + description + "This grouping defines the ISIS authentication type."; + + leaf auth-type { + type identityref { + base oc-keychain-types:AUTH_TYPE; + } + description + "The type of authentication used in the applicable IS-IS PDUs + (simple_key, keychain)."; + } + } + + grouping isis-simple-key-authentication-config { + description + "This grouping defines ISIS simple authentication config."; + + leaf auth-mode { + type identityref { + base oc-isis-types:AUTH_MODE; + } + description + "The type of authentication used in the applicable IS-IS PDUs. + + This leaf along with the sibling leaf 'auth-password' can be used + to configure the simple key authentication."; + } + + leaf auth-password { + type oc-types:routing-password; + description + "The authentication key used in the applicable IS-IS PDUs. The key in the + packet may be encrypted according to the configured authentication type."; + } + } grouping isis-metric-style-config { description "This grouping defines ISIS metric style."; @@ -315,6 +358,8 @@ module openconfig-isis { "This container defines ISIS authentication configuration."; uses isis-hello-authentication-config; + uses isis-authentication-type-config; + uses isis-simple-key-authentication-config; } container state { @@ -323,6 +368,8 @@ module openconfig-isis { "This container defines ISIS authentication state."; uses isis-hello-authentication-config; + uses isis-authentication-type-config; + uses isis-simple-key-authentication-config; } } @@ -1360,6 +1407,8 @@ module openconfig-isis { "Configuration parameters relating to IS-IS authentication."; uses isis-level-authentication-config; + uses isis-authentication-type-config; + uses isis-simple-key-authentication-config; } container state { @@ -1367,6 +1416,8 @@ module openconfig-isis { description "Operational state parameters relating to IS-IS authentication."; uses isis-level-authentication-config; + uses isis-authentication-type-config; + uses isis-simple-key-authentication-config; } } @@ -1379,10 +1430,10 @@ module openconfig-isis { default false; description "When this leaf is set to true, authentication of IS-IS PSNP, CSNP and - LSP packets is enabled using the authentication details specified in - the keychain in the sibling leaf. + LSP packets is enabled using the specified authentication details in + the sibling leaves. - The simbling 'disable-' leaves can be used to override the value + The sibling 'disable-' leaves can be used to override the value of this leaf and disable authentication for a specific packet type."; } diff --git a/release/models/keychain/openconfig-keychain-types.yang b/release/models/keychain/openconfig-keychain-types.yang index 799e5db5f..d84b1f54c 100644 --- a/release/models/keychain/openconfig-keychain-types.yang +++ b/release/models/keychain/openconfig-keychain-types.yang @@ -21,7 +21,13 @@ module openconfig-keychain-types { "This module contains general data definitions for use in keychain-based authentication."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; + + revision "2022-03-01" { + description + "Remove NONE identity from AUTH_TYPE"; + reference "0.2.0"; + } revision "2021-10-01" { description @@ -35,12 +41,6 @@ module openconfig-keychain-types { "Base identify to define the type of authentication"; } - identity NONE { - base AUTH_TYPE; - description - "NO authentication is used"; - } - identity SIMPLE_KEY { base AUTH_TYPE; description From 773b19ccccb891b310609bd6297259d72f249039 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Mon, 7 Mar 2022 10:12:46 -0800 Subject: [PATCH 024/372] Add prefix qualifier to keychain-ref (#598) * (M) release/models/keychain/openconfig-keychain.yang - Add prefixes to keychain-ref typedef --- release/models/keychain/openconfig-keychain.yang | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/release/models/keychain/openconfig-keychain.yang b/release/models/keychain/openconfig-keychain.yang index f07200c08..5cb27b75a 100644 --- a/release/models/keychain/openconfig-keychain.yang +++ b/release/models/keychain/openconfig-keychain.yang @@ -32,7 +32,13 @@ module openconfig-keychain { which may be then referenced by other models such as routing protocol management."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "0.3.0"; + + revision "2022-03-05" { + description + "Add prefix qualification to keychain-ref"; + reference "0.3.0"; + } revision "2021-12-31" { description @@ -48,7 +54,8 @@ module openconfig-keychain { typedef keychain-ref { type leafref { - path "/keychains/keychain/config/name"; + path "/oc-keychain:keychains/oc-keychain:keychain/" + + "oc-keychain:config/oc-keychain:name"; } description "A reference to a keychain defined on the system that can be used by From 8b804bc2045072a69ac8f54d3919547508763d29 Mon Sep 17 00:00:00 2001 From: Xiao Wang <39514181+xw-g@users.noreply.github.com> Date: Mon, 7 Mar 2022 11:58:38 -0800 Subject: [PATCH 025/372] Add component reboot and supervisor switchover (#576) (M) release/models/platform/openconfig-platform-types.yang * adds schema to support reboot and switchover (M) release/models/platform/openconfig-platform.yang * add redundancy role * add last-switchover-time * add reboot reason and time --- .../platform/openconfig-platform-types.yang | 90 ++++++++++++++++++- .../models/platform/openconfig-platform.yang | 51 ++++++++++- 2 files changed, 139 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index c25f026a1..b5ae20887 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2022-02-02" { + description + "Add support for component reboot and switchover."; + reference "1.3.0"; + } revision "2021-07-29" { description @@ -194,6 +200,31 @@ module openconfig-platform-types { uses oc-types:min-max-time; } + grouping component-redundant-role-switchover-reason { + description + "Common grouping for recording the reason of a component's + redundant role switchover. For example two supervisors in + a device, one as primary the other as secondary, switchover + can happen in different scenarios, e.g. user requested, + system error, priority contention, etc."; + + leaf trigger { + type component-redundant-role-switchover-reason-trigger; + description + "Records the generic triggers, e.g. user or system + initiated the switchover."; + } + + leaf details { + type string; + description + "Records detailed description of why the switchover happens. + For example, when system initiated the switchover, this leaf + can be used to record the specific reason, e.g. due to critical + errors of the routing daemon in the primary role."; + } + } + // identity statements identity OPENCONFIG_HARDWARE_COMPONENT { description @@ -418,4 +449,61 @@ module openconfig-platform-types { "A generic type reflecting whether a hardware component is powered on or off"; } + + identity COMPONENT_REBOOT_REASON { + description + "Base entity for component reboot reasons."; + } + + identity REBOOT_USER_INITIATED { + base COMPONENT_REBOOT_REASON; + description + "User initiated the reboot of the componenent."; + } + + identity REBOOT_POWER_FAILURE { + base COMPONENT_REBOOT_REASON; + description + "The component reboots due to power failure."; + } + + identity REBOOT_CRITICAL_ERROR { + base COMPONENT_REBOOT_REASON; + description + "The component reboots due to critical errors."; + } + + typedef component-redundant-role { + type enumeration { + enum PRIMARY { + description + "Component is acting the primary role."; + } + enum SECONDARY { + description + "Component is acting the secondary role."; + } + } + description + "A generic type reflecting the component's redundanty role. + For example, a device might have dual supervisors components + for redundant purpose, with one being the primary and the + other secondary."; + } + + typedef component-redundant-role-switchover-reason-trigger { + type enumeration { + enum USER_INITIATED { + description + "User initiated the switchover, e.g. via command line."; + } + enum SYSTEM_INITIATED { + description + "The system initiated the switchover, e.g. due to + critical errors in the component of the primar role."; + } + } + description + "Records how the role switchover is triggered."; + } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index b0b287397..3fe4b59c8 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -11,6 +11,7 @@ module openconfig-platform { import openconfig-extensions { prefix oc-ext; } import openconfig-alarm-types { prefix oc-alarm-types; } import openconfig-yang-types { prefix oc-yang; } + import openconfig-types { prefix oc-types; } // meta @@ -63,7 +64,14 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.14.0"; + oc-ext:openconfig-version "0.15.0"; + + revision "2022-02-02" { + description + "Add new state data for component reboot and + switchover."; + reference "0.15.0"; + } revision "2021-08-13" { description @@ -436,6 +444,47 @@ module openconfig-platform { corresponding subcomponent reference from the parent component."; } + + leaf redundant-role { + type oc-platform-types:component-redundant-role; + description + "For components that have redundant roles (e.g. two + supervisors in a device, one as primary the other as secondary), + this reports the role of the component."; + } + + container last-switchover-reason { + description + "For components that have redundant roles (e.g. two + supervisors in a device, one as primary the other as secondary), + this reports the reason of the last change of the + component's role."; + + uses oc-platform-types:component-redundant-role-switchover-reason; + } + + leaf last-switchover-time { + type oc-types:timeticks64; + description + "For components that have redundant roles (e.g. two + supervisors in a device, one as primary the other as + secondary), this reports the time of the last change of + the component's role."; + } + + leaf last-reboot-reason { + type identityref { + base oc-platform-types:COMPONENT_REBOOT_REASON; + } + description + "This reports the reason of the last reboot of the component."; + } + + leaf last-reboot-time { + type oc-types:timeticks64; + description + "This reports the time of the last reboot of the component."; + } } grouping platform-component-temp-alarm-state { From cc64bbf9b6c228aa438bc15fb66ad4c0670c0e72 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 8 Mar 2022 16:36:17 -0800 Subject: [PATCH 026/372] Updates to BGP prefix-limits (#532) Updates to BGP prefix-limits * (M) release/models/bgp/openconfig-bgp.yang * (M) release/models/bgp/openconfig-bgp-common-structure.yang * (M) release/models/bgp/openconfig-bgp-common.yang * (M) release/models/bgp/openconfig-bgp-global.yang * (M) release/models/bgp/openconfig-bgp-neighbor.yang * (M) release/models/bgp/openconfig-bgp-peer-group.yang * (M) release/models/bgp/openconfig-bgp-common-multiprotocol.yang - Add 'prefix-limit-received' container - Add state boolean node 'prefix-limit-exceeded' - Add 'last-prefix-limit-exceeded' leaf at neighbor state level to indicate the last time a prefix-limit was breached - Change 'restart-timer' to 'restart-time', change type to uint16 from decimal64 and relocate to session/neighbor level vs. AFI/SAFI --- .../openconfig-bgp-common-multiprotocol.yang | 60 +++++++++++++++---- .../bgp/openconfig-bgp-common-structure.yang | 9 ++- release/models/bgp/openconfig-bgp-common.yang | 18 +++++- release/models/bgp/openconfig-bgp-global.yang | 9 ++- .../models/bgp/openconfig-bgp-neighbor.yang | 27 ++++++++- .../models/bgp/openconfig-bgp-peer-group.yang | 9 ++- release/models/bgp/openconfig-bgp.yang | 9 ++- 7 files changed, 122 insertions(+), 19 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index b0e9608d0..92df3368d 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description @@ -148,7 +155,7 @@ submodule openconfig-bgp-common-multiprotocol { default false; description "This leaf indicates whether the AFI-SAFI is - enabled for the neighbour or group"; + enabled for the neighbor or group"; } } @@ -403,6 +410,29 @@ submodule openconfig-bgp-common-multiprotocol { "State information relating to the prefix-limit for the AFI-SAFI"; uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; + uses bgp-common-mp-all-afi-safi-common-prefix-limit-state; + } + } + + container prefix-limit-received { + description + "Configure the maximum number of prefixes that will be + received from a peer"; + + container config { + description + "Configuration parameters relating to the prefix + limit for the AFI-SAFI"; + uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; + } + + container state { + config false; + description + "State information relating to the prefix-limit for the + AFI-SAFI"; + uses bgp-common-mp-all-afi-safi-common-prefix-limit-config; + uses bgp-common-mp-all-afi-safi-common-prefix-limit-state; } } } @@ -511,7 +541,7 @@ submodule openconfig-bgp-common-multiprotocol { type uint32; description "Maximum number of prefixes that will be accepted - from the neighbour"; + from the neighbor"; } leaf prevent-teardown { @@ -529,23 +559,27 @@ submodule openconfig-bgp-common-multiprotocol { type oc-types:percentage; description "Threshold on number of prefixes that can be received - from a neighbour before generation of warning messages + from a neighbor before generation of warning messages or log entries. Expressed as a percentage of max-prefixes"; } + } - leaf restart-timer { - type decimal64 { - fraction-digits 2; - } - units "seconds"; + grouping bgp-common-mp-all-afi-safi-common-prefix-limit-state { + description + "State parameters relating to prefix-limits for an AFI-SAFI"; + + leaf prefix-limit-exceeded { + type boolean; description - "Time interval in seconds after which the BGP session - is re-established after being torn down due to exceeding - the max-prefix limit."; + "If set to true, the prefix-limit has been exceeded. When the + prefix-limit has been exceeded, the value of true must be retained + until the restart-time has expired. Prior to session re-establishment, + the value must be reset to false"; } } + grouping bgp-common-mp-ipv4-ipv6-unicast-common-config { description "Common configuration parameters for IPv4 and IPv6 Unicast @@ -555,7 +589,7 @@ submodule openconfig-bgp-common-multiprotocol { type boolean; default "false"; description - "If set to true, send the default-route to the neighbour(s)"; + "If set to true, send the default-route to the neighbor(s)"; } } } diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index a8c98c993..4db441ca9 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,14 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 3460a6252..b87ef7824 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description @@ -173,6 +180,15 @@ submodule openconfig-bgp-common { reference "RFC 4271 - A Border Gateway Protocol 4, Sec 9.2.1.1"; } + + leaf restart-time { + type uint16; + units "seconds"; + description + "Time interval in seconds after which the BGP session is + re-established after being torn down due to exceeding any + configured max prefix-limit."; + } } grouping bgp-common-neighbor-group-config { diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 6f8d76627..6394782ed 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,14 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 3db42559d..79e73d2b0 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,14 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description @@ -305,6 +312,24 @@ submodule openconfig-bgp-neighbor { due to an inbound connection request from a specified source prefix within a dynamic-neighbor-prefix."; } + + leaf last-prefix-limit-exceeded { + type oc-types:timeticks64; + description + "This timestamp indicates the time that the BGP session last + violated a configured max prefix-limit for any AFI/SAFI combination + on the session. The value is the timestamp in nanoseconds relative + to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). + + If the 'prefix-limit-exceeded' node is set to true for any AFI/SAFI + on the session, then the next restart time for the session can be + calculated as this value plus the configured 'restart-time' under + the neighbor timers. + + This value should be retained across established sessions and is only + set/updated when prefix-limit-exceeded transitions from false/unset to + true."; + } } grouping bgp-neighbor-counters-message-types-state { diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 094093a6f..6cdb4b8c1 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,14 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 4b8407de1..d027c0b00 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -60,7 +60,14 @@ module openconfig-bgp { +-> [ optional pointer to peer-group ] +-> AFI / SAFI [ per-AFI overrides ]"; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "8.0.0"; + + revision "2021-12-01" { + description + "Add prefix-limit-received, add prefix-limit + state nodes, change/relocate restart-timer"; + reference "8.0.0"; + } revision "2021-10-21" { description From 28630070cbf209399fdd1ce697aea052aeb2fec4 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Mon, 28 Mar 2022 19:26:59 -0700 Subject: [PATCH 027/372] Introduce BIOS identity for component type (#537) * (M) release/models/platform/openconfig-platform-types.yang - Add BIOS identity as valid component type --- .../platform/openconfig-platform-types.yang | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index b5ae20887..30cd475a7 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2022-03-27" { + description + "Add identity for BIOS"; + reference "1.4.0"; + } revision "2022-02-02" { description @@ -352,6 +358,13 @@ module openconfig-platform-types { item"; } + identity BIOS { + base OPENCONFIG_SOFTWARE_COMPONENT; + description + "Legacy BIOS or UEFI firmware interface responsible for + initializing hardware components and first stage boot loader."; + } + identity BOOT_LOADER { base OPENCONFIG_SOFTWARE_COMPONENT; description From cffb805500ba8bd3ae5d4cb4dc36c3d8cfaa6aab Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Fri, 1 Apr 2022 20:32:10 -0700 Subject: [PATCH 028/372] Updates to RSVP message authentication (#531) * Updates to RSVP message authentication * (M) release/models/mpls/openconfig-mpls-rsvp.yang - Add authentication-type to indicate hash algorithm in use - Change authentication-key type for consistency * (M) release/models/mpls/openconfig-mpls-types.yang - Add new identity for RSVP authentication types * Readjust revision-date --- release/models/mpls/openconfig-mpls-rsvp.yang | 26 +++++++++++----- .../models/mpls/openconfig-mpls-types.yang | 31 +++++++++++++++---- 2 files changed, 43 insertions(+), 14 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-rsvp.yang b/release/models/mpls/openconfig-mpls-rsvp.yang index 680515188..0efa126d0 100644 --- a/release/models/mpls/openconfig-mpls-rsvp.yang +++ b/release/models/mpls/openconfig-mpls-rsvp.yang @@ -28,7 +28,14 @@ module openconfig-mpls-rsvp { parameters and LSP-specific configuration for constrained-path LSPs"; - oc-ext:openconfig-version "3.0.3"; + oc-ext:openconfig-version "4.0.0"; + + revision "2022-03-27" { + description + "Change authentication-key to routing-password type, Add new + authentication-type to indicate hashing algorithm."; + reference "4.0.0"; + } revision "2021-07-28" { description @@ -349,15 +356,18 @@ module openconfig-mpls-rsvp { "Enables RSVP authentication on the node."; } - leaf authentication-key { - type string { - // Juniper supports 1..16 while - // Cisco has a much bigger range, up to 60. - length "1..32"; + leaf authentication-type { + type identityref { + base oc-mplst:RSVP_AUTH_TYPE; } description - "authenticate RSVP signaling - messages"; + "RSVP message authentication algorithm type"; + } + + leaf authentication-key { + type oc-types:routing-password; + description + "Authenticate RSVP signaling messages"; reference "RFC 2747: RSVP Cryptographic Authentication"; } diff --git a/release/models/mpls/openconfig-mpls-types.yang b/release/models/mpls/openconfig-mpls-types.yang index 6cba7ddc2..1df30b3b9 100644 --- a/release/models/mpls/openconfig-mpls-types.yang +++ b/release/models/mpls/openconfig-mpls-types.yang @@ -19,7 +19,13 @@ module openconfig-mpls-types { description "General types for MPLS / TE data model"; - oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.4.0"; + + revision "2021-12-01" { + description + "Add new identity for RSVP authentication types"; + reference "3.4.0"; + } revision "2021-06-16" { description @@ -286,7 +292,7 @@ module openconfig-mpls-types { "LSP is administratively up"; } - identity NULL_LABEL_TYPE { + identity NULL_LABEL_TYPE { description "Base identity from which specific null-label types are derived."; @@ -353,10 +359,10 @@ module openconfig-mpls-types { reference "IANA PWE3 0x0005"; } -identity PATH_METRIC_TYPE { - description - "Base identity for path metric type."; -} + identity PATH_METRIC_TYPE { + description + "Base identity for path metric type."; + } identity TE_METRIC { base PATH_METRIC_TYPE; @@ -398,6 +404,19 @@ identity PATH_METRIC_TYPE { Communication Protocol (PCEP)."; } + identity RSVP_AUTH_TYPE { + description + "Base identity for RSVP message authentication types"; + reference + "RFC2747: RSVP Cryptographic Authentication"; + } + + identity RSVP_AUTH_MD5 { + base RSVP_AUTH_TYPE; + description + "HMAC-MD5 message authentication"; + } + // typedef statements typedef mpls-label { type union { From 57875f83b78d86607ac8f7b3135796400d5d1632 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 14 Apr 2022 11:16:46 -0700 Subject: [PATCH 029/372] Add mike-albano as OWNER for /release/models/wifi (#615) --- .github/CODEOWNERS | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e96fc6e6c..3b5ac5d39 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,3 +6,4 @@ # the release/models directory (all YANG content) # is maintained by the public-writers OpenConfig team. /release/models/ @openconfig/public-writers +/release/models/wifi @mike-albano From e1b22ee32a9eda38e8760de674322d816ec990e7 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Tue, 19 Apr 2022 11:25:14 -0700 Subject: [PATCH 030/372] Fix xpath errors uncovered by pyang@v2.5.3 (#619) * (M) release/models/network-instance/openconfig-network-instance-l2.yang * (M) release/models/network-instance/openconfig-network-instance.yang - Fix XPATH errors that were picked up by new pyang version check. --- .../openconfig-network-instance-l2.yang | 8 +++++++- .../openconfig-network-instance.yang | 20 ++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index fa9ff14f7..b11a22d18 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -23,7 +23,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "0.16.2"; + oc-ext:openconfig-version "0.16.3"; + + revision "2022-04-19" { + description + "Fix some broken xpath references in when statements."; + reference "0.16.3"; + } revision "2021-11-17" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 214c0276b..dc8dc4e16 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -47,7 +47,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "0.16.2"; + oc-ext:openconfig-version "0.16.3"; + + revision "2022-04-19" { + description + "Fix some broken xpath references in when statements."; + reference "0.16.3"; + } revision "2021-11-17" { description @@ -290,8 +296,8 @@ module openconfig-network-instance { } container evpn { - when "./config/type = 'oc-ni-types:L2VSI' - or ./config/type = 'oc-ni-types:L3VRF'" { + when "../config/type = 'oc-ni-types:L2VSI' + or ../config/type = 'oc-ni-types:L3VRF'" { description "EVPN container should be included for L2 and L3 NIs"; } @@ -320,8 +326,8 @@ module openconfig-network-instance { uses encapsulation-config; uses l2ni-encapsulation-config { - when "./config/type = 'oc-ni-types:L2VSI' or ./config/type = 'oc-ni-types:L2P2P' - or ./config/type = 'oc-ni-types:L2L3'" { + when "../../config/type = 'oc-ni-types:L2VSI' or ../../config/type = 'oc-ni-types:L2P2P' + or ../../config/type = 'oc-ni-types:L2L3'" { description "Only allow L2 encapsulations to be set when the instance is of a type that supports @@ -338,8 +344,8 @@ module openconfig-network-instance { uses encapsulation-config; uses l2ni-encapsulation-config { - when "./config/type = 'oc-ni-types:L2VSI' or ./config/type = 'oc-ni-types:L2P2P' - or ./config/type = 'oc-ni-types:L2L3'" { + when "../../config/type = 'oc-ni-types:L2VSI' or ../../config/type = 'oc-ni-types:L2P2P' + or ../../config/type = 'oc-ni-types:L2L3'" { description "Only allow L2 encapsulations to be set when the instance is of a type that supports From 4e1d14cadfa1a687585606ba83591a463e324d25 Mon Sep 17 00:00:00 2001 From: Alex Webster <31635844+awebsters@users.noreply.github.com> Date: Tue, 19 Apr 2022 14:27:34 -0400 Subject: [PATCH 031/372] ospfv2: fix spelling error of the retransmission-queue-length leaf (#583) * (M) release/models/ospf/openconfig-ospfv2-*.yang - Fix spelling error in retransmission-queue-length leaf name. --- .../models/ospf/openconfig-ospfv2-area-interface.yang | 10 ++++++++-- release/models/ospf/openconfig-ospfv2-area.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-common.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-global.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-lsdb.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2.yang | 8 +++++++- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index ae981f9b9..301631321 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-02-10" { + description + "Fix spelling error in retransmission-queue-length leaf."; + reference "0.4.0"; + } revision "2021-07-28" { description @@ -292,7 +298,7 @@ submodule openconfig-ospfv2-area-interface { neighbor has been through"; } - leaf retranmission-queue-length { + leaf retransmission-queue-length { type uint32; description "The number of LSAs that are currently in the queue to be diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index 01ef3fa7b..a74ed90fd 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-02-10" { + description + "Fix spelling error in retransmission-queue-length leaf."; + reference "0.4.0"; + } revision "2021-07-28" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index cd3e3dc9e..d08f1a8d3 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-02-10" { + description + "Fix spelling error in retransmission-queue-length leaf."; + reference "0.4.0"; + } revision "2021-07-28" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 90ffc09b5..cbbd717a0 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-02-10" { + description + "Fix spelling error in retransmission-queue-length leaf."; + reference "0.4.0"; + } revision "2021-07-28" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index e2595109d..546587667 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-02-10" { + description + "Fix spelling error in retransmission-queue-length leaf."; + reference "0.4.0"; + } revision "2021-07-28" { description diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index 045983da7..cb73a5802 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-02-10" { + description + "Fix spelling error in retransmission-queue-length leaf."; + reference "0.4.0"; + } revision "2021-07-28" { description From bfbe6828cd36e950f6925fde24f8cb12911ee4c4 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 19 Apr 2022 19:03:38 -0600 Subject: [PATCH 032/372] User-defined defaults and description updates for list keys (#599) * User-defined defaults and description updates for list keys * Note this change is potentially backwards incompatible due to a new requirement for a default value for network instance of type "DEFAULT_INSTANCE" to use the name "DEFAULT". Any implementation currently using a string other than "DEFAULT" for this will need a change to be compliant with this version. * (M) release/models/network-instance/openconfig-network-instance-l2.yang * (M) release/models/network-instance/openconfig-network-instance.yang - Update network-instance name description to provide implementation guidance on default name for DEFAULT_INSTANCE should OpenConfig schemas not be used for configuration but rather for state only as well as suggested name - Update protocol instance name with suggested value as well as default name should OpenConfig schemas not be used for configuration but rather for state only * (M) release/models/system/openconfig-system-grpc.yang - Update grpc server name with suggested value as well as default name should OpenConfig schemas not be used for configuration but rather for state only --- .../openconfig-network-instance-l2.yang | 9 ++++- .../openconfig-network-instance.yang | 39 ++++++++++++++----- .../models/system/openconfig-system-grpc.yang | 18 ++++++++- 3 files changed, 53 insertions(+), 13 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index b11a22d18..dd7ee2ee3 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -23,7 +23,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "0.16.3"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-04-19" { + description + "Description updates for DEFAULT_INSTANCE implementation + guidance and default value/guidance for protocol instances"; + reference "1.0.0"; + } revision "2022-04-19" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index dc8dc4e16..d7dbd78f4 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -47,7 +47,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "0.16.3"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-04-19" { + description + "Description updates for DEFAULT_INSTANCE implementation + guidance and default value/guidance for protocol instances"; + reference "1.0.0"; + } revision "2022-04-19" { description @@ -1141,8 +1148,10 @@ module openconfig-network-instance { leaf name { type string; description - "An operator-assigned unique name for the forwarding - instance"; + "An operator-assigned unique name for the network instance. + If the operator does not designate a name for the instance of + type 'DEFAULT_INSTANCE' (e.g. config), the implementation + should use the name of 'DEFAULT' (e.g. state)."; } leaf type { @@ -1152,12 +1161,14 @@ module openconfig-network-instance { description "The type of network instance. The value of this leaf indicates the type of forwarding entries that should be - supported by this network instance. Signalling protocols - also use the network instance type to infer the type of - service they advertise; for example MPLS signalling - for an L2VSI network instance would infer a VPLS service - whereas a type of L2PTP would infer a VPWS (pseudo-wire) - service"; + supported by this network instance. Signalling protocols also + use the network instance type to infer the type of service + they advertise; for example MPLS signalling for an L2VSI + network instance would infer a VPLS service whereas a type of + L2PTP would infer a VPWS (pseudo-wire) service. + + An implementation must support only a single network-instance + of type 'DEFAULT_INSTANCE'."; } leaf enabled { @@ -1210,8 +1221,16 @@ module openconfig-network-instance { leaf name { type string; + default "DEFAULT"; description - "A unique name for the protocol instance"; + "A unique name for the protocol instance. + + If the operator does not designate a name for the protocol + instance (e.g. config), the implementation should use the + name of 'DEFAULT' (e.g. state). In addition, for + implementations that support single protocol instances, the + default value is recommended for consistency and uniqueness + per protocol instance."; } leaf enabled { diff --git a/release/models/system/openconfig-system-grpc.yang b/release/models/system/openconfig-system-grpc.yang index 093e1fa13..fb16870a2 100644 --- a/release/models/system/openconfig-system-grpc.yang +++ b/release/models/system/openconfig-system-grpc.yang @@ -22,10 +22,17 @@ module openconfig-system-grpc { to be included in the list."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "1.0.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2022-04-19" { + description + "Description and default value updates for grpc-server + implementation guidance."; + reference "1.0.0"; + } + revision "2021-06-16" { description "Remove trailing whitespace"; @@ -101,9 +108,16 @@ module openconfig-system-grpc { leaf name { type string; + default "DEFAULT"; description "The name of the gRPC server instance that is running on - the local system."; + the local system. + + If the operator does not designate a name for the protocol + instance (e.g. config), the implementation should use the + name of 'DEFAULT' (e.g. state). In addition, for + implementations that support a single gRPC server instance, + the default value is recommended for consistency."; } leaf-list services { From ce95d0f03e85450308ebd42e544a7447d78eae85 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 20 Apr 2022 19:55:59 -0600 Subject: [PATCH 033/372] Clean up unused imports (#622) * (M) release/models/interfaces/openconfig-if-ethernet.yang * (M) release/models/platform/openconfig-platform-integrated-circuit.yang - Remove unused imports --- release/models/interfaces/openconfig-if-ethernet.yang | 9 +++++++-- .../platform/openconfig-platform-integrated-circuit.yang | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ethernet.yang b/release/models/interfaces/openconfig-if-ethernet.yang index b3dd9d4dd..803e7f93f 100644 --- a/release/models/interfaces/openconfig-if-ethernet.yang +++ b/release/models/interfaces/openconfig-if-ethernet.yang @@ -10,7 +10,6 @@ module openconfig-if-ethernet { // import some basic types import openconfig-interfaces { prefix oc-if; } import iana-if-type { prefix ianaift; } - import openconfig-platform-types { prefix oc-platform-types; } import openconfig-yang-types { prefix oc-yang; } import openconfig-extensions { prefix oc-ext; } @@ -25,7 +24,13 @@ module openconfig-if-ethernet { "Model for managing Ethernet interfaces -- augments the OpenConfig model for interface configuration and state."; - oc-ext:openconfig-version "2.12.1"; + oc-ext:openconfig-version "2.12.2"; + + revision "2022-04-20" { + description + "Remove unused import"; + reference "2.12.2"; + } revision "2021-07-20" { description diff --git a/release/models/platform/openconfig-platform-integrated-circuit.yang b/release/models/platform/openconfig-platform-integrated-circuit.yang index 6d9f567dd..67fec321b 100644 --- a/release/models/platform/openconfig-platform-integrated-circuit.yang +++ b/release/models/platform/openconfig-platform-integrated-circuit.yang @@ -7,7 +7,6 @@ module openconfig-platform-integrated-circuit { import openconfig-platform { prefix oc-platform; } import openconfig-extensions { prefix oc-ext; } - import openconfig-types { prefix oc-types; } organization "OpenConfig working group"; contact @@ -20,7 +19,13 @@ module openconfig-platform-integrated-circuit { These components are generically forwarding NPUs or ASICs within the system for which configuration or state is applicable."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2022-04-20" { + description + "Remove unused import"; + reference "0.3.1"; + } revision "2021-08-09" { description From a1a31bf19c9321a18f428094b76534d8c06bb84a Mon Sep 17 00:00:00 2001 From: Fabrizio2210 <34220075+fabrizio2210@users.noreply.github.com> Date: Mon, 25 Apr 2022 20:10:32 +0200 Subject: [PATCH 034/372] Adding config leaf for BGP port (#605) * Adding config leaf for BGP port. * Added description of the change. * Updating dependant modules' version. * Removing trailing spaces from version description. * Advancing just the minor version. --- .../bgp/openconfig-bgp-common-multiprotocol.yang | 8 +++++++- .../bgp/openconfig-bgp-common-structure.yang | 8 +++++++- release/models/bgp/openconfig-bgp-common.yang | 8 +++++++- release/models/bgp/openconfig-bgp-global.yang | 8 +++++++- release/models/bgp/openconfig-bgp-neighbor.yang | 15 ++++++++++++++- release/models/bgp/openconfig-bgp-peer-group.yang | 8 +++++++- release/models/bgp/openconfig-bgp.yang | 8 +++++++- 7 files changed, 56 insertions(+), 7 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 92df3368d..1ee2a4999 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 4db441ca9..092dfcbc2 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index b87ef7824..ac625acd5 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 6394782ed..78bb10269 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 79e73d2b0..3172f6a41 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description @@ -151,6 +157,13 @@ submodule openconfig-bgp-neighbor { "Address of the BGP peer, either in IPv4 or IPv6"; } + leaf neighbor-port { + type oc-inet:port-number; + default 179; + description + "Port number of the BGP peer"; + } + leaf enabled { type boolean; default true; diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 6cdb4b8c1..a7dd90215 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index d027c0b00..4c030bb76 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -60,7 +60,13 @@ module openconfig-bgp { +-> [ optional pointer to peer-group ] +-> AFI / SAFI [ per-AFI overrides ]"; - oc-ext:openconfig-version "8.0.0"; + oc-ext:openconfig-version "8.1.0"; + + revision "2022-03-21" { + description + "Add BGP port"; + reference "8.1.0"; + } revision "2021-12-01" { description From 2846676d38eb9bd42ee86a6cf277e155a41a25e9 Mon Sep 17 00:00:00 2001 From: Arturo Mayoral Date: Tue, 26 Apr 2022 20:47:36 +0200 Subject: [PATCH 035/372] Create openconfig-manifest-file-terminal-device.yang (#601) (A) release/models/devices-manifest/openconfig-terminal-device-properties.yang o list of operational modes supported within the terminal device's o New attributes: min-tx-osnr, pulse-shaping-type o Removed attributes: min-q-value, since it is considered redundant respect to min-rx-osnr o Changed descriptions of osnr measurement reference from 193.7 to 193.6 according to other standards (M) release/models/devices-manifest/openconfig-terminal-device-property-types.yang o Included PULSE_SHAPING typedef and identities. o Included PDL_DB impairment type for penalties. (A) doc/terminal-device-properties-guide.md o Explanation of the device-manifest concept and how it should be used Summary This PR intends to model openconfig terminal device's coherent transmission operational models properties/features, which can enhance current black/opaque visibility of operational-mode's Tx and Rx characteristics which are relevant for network planning and configuration processes. openconfig-terminal-device-properties.yang provides the list of operational modes supported within the terminal device's which is exposing this manifest file. Each operational mode descriptor is defined for single OTSi scope from now. It allows to two types of modes: standard ITU-T g.698.2 defined application identifiers; and explicitly defined modes, characterized by the set of attributes included within the "explicit-mode" container. Each explicit mode descriptor contains two target set of properties: - optical-channel-config-value-constrains, which characterises operational ranges for config values of the optical-channel component associated to the target mode, such central-frequency-range, target-output-power-range. - operational-mode-capabilities, which characterises the transmission model signal for planning purposes such modulation format, symbol rate, FEC gain, min/max rx input power, min-osnr, pre-fec-ber-threshold, minimum q-value and CD/PMD dispersion tolerances and OSNR penalties, which characterises the maximum physical impairments introduced by the line system which are tolerable for an optical transmission function. This information is typically provided by the transceiver/optical terminal product's datasheet. * Enhanced definitions of min-rx-osnr, min-input-power and max-input-power This proposal was submitted by the Telecom Infra Project (TIP) Mandatory Use Cases for SDN Transport (MUST) sub-group. This is an operator centric initiative which intends to achieve a wider consensus about the SDN standards to use on the network transport segment. --- doc/terminal-device-properties-guide.md | 39 ++ release/models/devices-manifest/.spec.yml | 12 + ...openconfig-terminal-device-properties.yang | 565 ++++++++++++++++++ ...config-terminal-device-property-types.yang | 457 ++++++++++++++ 4 files changed, 1073 insertions(+) create mode 100644 doc/terminal-device-properties-guide.md create mode 100644 release/models/devices-manifest/.spec.yml create mode 100644 release/models/devices-manifest/openconfig-terminal-device-properties.yang create mode 100644 release/models/devices-manifest/openconfig-terminal-device-property-types.yang diff --git a/doc/terminal-device-properties-guide.md b/doc/terminal-device-properties-guide.md new file mode 100644 index 000000000..88f3f0706 --- /dev/null +++ b/doc/terminal-device-properties-guide.md @@ -0,0 +1,39 @@ +# Openconfig Terminal Device Manifest files guidelines + +**Contributors:** Arturo Mayoral López de Lerma + +This page documents the purpose and usability guidelines for the openconfig-terminal-device-properties.yang and openconfig-terminal-device-property-types.yang models included in openconfig/devices-manifest folder. These models enter in the category of devices manifest files, which is a new category of openconfig models which are intended to expose the static properties of a devices, which are traditionally documented by the device's manufacturers in the product datasheets. These properties are typically required by network planning teams to plan the network deployments. + +# Motivation + +Current optical transport networks are evolving into new degrees of openness and flexibility, where the optical terminal units become more and more independent from the rest of the DWDM line system, management and control. This means for instance that an optical terminal device, i.e., a transponder/muxponder device can be deployed as a standalone unit and connected to the line system of a third-party provider. In order, to make this type of integrations efficient, the optical channel signal characteristics can be exposed through the management interface (i.e., through OpenConfig models in this case), to allow the remote controller entity to ingest the required data for successful optical planning and impairment validation of the end-to-end transmission across the Optical Line System (OLS). This intends to remove ambiguity on how suppliers expose data required for network planning and physical impairment validation of end-to-end Optical Channels (OCh/OTSi) and foster openness across the optical transport industry. + +Currently in OpenConfig, the optical channels characteristics are opaque to some extent and the model only offers an abstraction named 'operational-mode', which allows the manufactures to encode the different transmission modes supported by the device into a single integer value. While this may be sufficient in some cases (the manufacturer can offer the related mode details offline to its customers), and very practical for configuration purposes, it becomes cucumbersome for an network operator to encode this information into their network controller application, specially if the network contains many different vendor solutions which may expose their signal characteristics in different formats, adding or omitting some information in each case. Thus, this model intends to provide uniformity on the way operational-modes are characterized by including a set of static attributes associated to each mode. + +This proposal was submitted by the Telecom Infra Project (TIP) Mandatory Use Cases for SDN Transport (MUST) sub-group. This is an operator centric initiative which intends to achieve a wider consensus about the SDN standards to use on the network transport segment. + +# Model content +The model contains two main building blocks: +* **operational-mode-capabilities** this set of attributes contains all characteristic information of the signal (modulation format, FEC, bit rate...), relevant information for the physical impairment validation (OSNR Rx sensitivity, CD/PMD tolerance and penalties). +* **optical-channel-config-value-constrains** which contains the transmission configuration constrains/ranges of the optical-channel's attributes characterized by the operational-mode, i.e., the central frequency range, the frequency grid and the configurable transmitted power. + + +# Model logic + +1. **Terminal device manufacturing – Operational modes hardcoding** +Terminal device manufacturer encodes supported transmission modes characteristic information into the terminal-device's manifest file which is hardcoded into the device firmware. This process shall takes into account the transmission modes supported third-party transceiver pluggable modules compatible with the terminal device. + +2. **Terminal device w/o pluggable – Initial setup** +When the device is started, the operational modes list is complete and contains all the information about the compatible transceivers and their associated operational modes. The manifest file defined by the openconfig-terminal-device-properties.yang model is static and will remain available and invariant through the terminal device's management interface which exposes openconfig models. + +3. **Terminal device with equipped pluggable – Running State** +Once the line-card module is successfully equipped with the fixed or pluggable transceiver and the module is discovered by the Terminal Device, the operational data store is updated with the actual modes available (see openconfig-terminal-device.yang module). The list of modes present in the terminal-device/operational-modes list represents the actual modes which are available in runtime by the device and which can be configured as part of the optical-channel configuration. Please note, that this information can be dynamically updated if the pluggable unit changes. For each operational-mode/mode-id present in the operational data store, there should be an operational-modes/mode-descriptor item with the same mode-id, included in the manifest file. + +# Model implementation guidelines + +Manifest files are a special OpenConfig model category since they do not represent operational data. Thus, this category of models will be included within the "models/tree/master/yang/devices-manifest" folder. + +In order to keep separated them from the rest of operational models, the following openconfig extension is included in the model, to enrich the module metadata: +``` + oc-ext:origin "openconfig-properties"; +``` \ No newline at end of file diff --git a/release/models/devices-manifest/.spec.yml b/release/models/devices-manifest/.spec.yml new file mode 100644 index 000000000..2f8d19d14 --- /dev/null +++ b/release/models/devices-manifest/.spec.yml @@ -0,0 +1,12 @@ +- name: openconfig-terminal-device-properties + docs: + - yang/devices-manifest/openconfig-terminal-device-properties.yang + build: + - yang/devices-manifest/openconfig-terminal-device-properties.yang + run-ci: true +- name: openconfig-terminal-device-property-types + docs: + - yang/devices-manifest/openconfig-terminal-device-property-types.yang + build: + - yang/devices-manifest/openconfig-terminal-device-property-types.yang + run-ci: true diff --git a/release/models/devices-manifest/openconfig-terminal-device-properties.yang b/release/models/devices-manifest/openconfig-terminal-device-properties.yang new file mode 100644 index 000000000..2a9c2e506 --- /dev/null +++ b/release/models/devices-manifest/openconfig-terminal-device-properties.yang @@ -0,0 +1,565 @@ +module openconfig-terminal-device-properties { + + // Yang version can be "1" without mandatory fields. + // Yang version 1.1 allows mandatory fiels in an augment + // https://tools.ietf.org/html/rfc7950#section-7.17 + // If the augmentation adds mandatory nodes (see Section 3) that + // represent configuration to a target node in another module, the + // augmentation MUST be made conditional with a "when" statement. + + yang-version "1"; + + // namespace + namespace "http://example.net/yang/openconfig-terminal-device-properties"; + prefix "oc-opt-term-properties"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-transport-types { prefix oc-opt-types; } + import openconfig-terminal-device-property-types { prefix oc-opt-term-prop-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Module to extend OpenConfig terminal device's operational modes' + data. It supports operational modes for one Optical + Channel, with a single OTSi. The operational mode includes key + attributes such modulation format, symbol rate, nominal central + frequency (NFC) tunability constraints (grid, min/max NCF), FEC + gain, minimum and maximum output power of the transmitter or + minimum OSNR at the receiver as well as the spectrum width of + the OTSi (OTSiMC). It also includes (optional) aspects such as + filter characterization, CD and DGD tolerance."; + + oc-ext:openconfig-version "0.1.0"; + + + // Revisions + revision "2022-04-26" { + description "Initial manifest fine to extend the information + related to the operational modes supported by a terminal device."; + reference "0.1.0"; + } + + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig-properties"; + + // grouping statements + + grouping penalties-list-element-attributes { + description + "OSNR penalties grouping, including the set of attributes + which defines each element of the penalties list."; + + leaf parameter-and-unit { + type oc-opt-term-prop-types:impairment-type; + description + "Impairment and unit leading to the penalty (i.e., cd-ps)"; + } + + leaf up-to-boundary { + type decimal64 { + fraction-digits 2; + } + description + "defines the upper (for positive values) and lower (for negative values) + limit for which the penalty value is valid."; + } + + leaf penalty-value { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "OSNR penalty associated to the given values, expressed in dB."; + } + } + + grouping fec-codes-attributes { + description + "FEC codes attributes grouping, including the set of attributes + which defines the FEC code employed on the transmission represented + by the operational-mode."; + + leaf fec-coding { + type union { + type string; + type oc-opt-term-prop-types:fec-coding; + } + description + "Forward error correction (FEC) coding schema used in the + transmission mode. Type union of string (for proprietary codes) + and a set of standard codes encoded as identity references"; + } + + leaf coding-overhead { + type decimal64 { + fraction-digits 2; + } + description + "Coding overhead rate in %."; + } + + leaf coding-gain { + type decimal64 { + fraction-digits 2; + } + units dB; + default 0.00; + description + "Net coding gain (NCG) in dB units at 10E-15 bit error rate. + It may vary depending on the modulation format used in the + associated transmission mode (operational-mode)."; + } + leaf pre-fec-ber-threshold { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "Threshold on the PRE-FEC-BER, for which FEC code is able to + correct errors."; + } + } + + grouping filter-attributes-top { + description + "This grouping includes the attributes which characterises the filter + at transceiver transmission for the given operational-mode."; + + leaf pulse-shaping-type { + type union { + type string; + type oc-opt-term-prop-types:pulse-shaping-type; + } + description + "Pulse/spectral shaping type such as Raised-cosine (RC), + root-raised-cosine (RRC) and OFF. The attribute allows + other pulse-shaping types to be encoded as strings."; + } + + leaf roll-off { + type decimal64 { + fraction-digits 2; + } + description + "Decimal fraction between 0 and 1. Roll-off parameter (𝛽) of the + TX pulse shaping filter. This assumes a raised-cosine filter"; + + } + } + + grouping operational-mode-descriptor-explicit-config-constraints-state { + description + "Configuration value constraints for optical channels + configured on the target operational mode."; + + leaf min-central-frequency { + type oc-opt-types:frequency-type; + description + "The lowest configurable central frequency in MHz."; + } + + leaf max-central-frequency { + type oc-opt-types:frequency-type; + description + "The highest configurable central frequency in MHz."; + } + + leaf grid-type { + type oc-opt-term-prop-types:grid-type; + description + "Frequency ITU-T G.694.1 (10/2020) grid specification attribute."; + } + + leaf adjustment-granularity { + type oc-opt-term-prop-types:adjustment-granularity; + description + "Adjustment granularity in Gigahertz. As per ITU-T G.694.1 + (10/2020), it is used to calculate nominal central frequency of an + optical channel. It defines the minimum granularity supporting by the + optical channel's central frequency setting."; + } + + leaf min-channel-spacing { + type decimal64 { + fraction-digits 2; + } + units GHz; + description + "Minimum recommended spectrum spacing between the central frequency of two + adjacent optical channels of the same mode. In case of two adjacent optical + channels with different operational-modes, it is up to the path computation + engine to determine the minimum distance between the central frequencies of + these two optical channels."; + } + + leaf min-output-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Minimum target output optical power level of the optical channel, + configurable according to the optical transceiver mode properties, + expressed in increments of 0.01 dBm (decibel-milliwats)"; + } + + leaf max-output-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Maximum target output optical power level of the optical channel, + configurable according to the optical transceiver mode properties, + expressed in increments of 0.01 dBm (decibel-milliwatts)"; + } + } + + grouping operational-mode-descriptor-explicit-capabilities-state { + description + "Operational-mode capabilities leafs."; + + leaf modulation-format { + type union { + type string; + type oc-opt-term-prop-types:modulation-format; + } + description + "Optical modulation format associated to the mode. The + modulation format associated to the optical signal."; + } + + leaf bit-rate { + type oc-opt-term-prop-types:bit-rate; + description + "Rounded bit rate of the tributary signal delivered by the + optical channel associated to the specific operational mode. + Exact bit rate will be refined by protocol selection at the + associated tributary logical channel."; + } + + leaf baud-rate { + type decimal64 { + fraction-digits 2; + } + units Bd; + description + "Baud-rate or symbol rate."; + } + + leaf optical-channel-spectrum-width { + type decimal64 { + fraction-digits 2; + } + units GHz; + description + "Spectrum width of the optical channel associated to this + operational mode, calculated as the baud-rate*(1+roll-off)."; + } + + leaf min-tx-osnr { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "Minimum in-band transmitter OSNR measured at 0.1nm@193.6Thz, + considering the maximum transceiver inserted noise. "; + } + + leaf min-rx-osnr { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "Minimum back-to-back OSNR measured over 0.1nm@193.6Thz or + 12.5GHz noise resolution bandwidth at the min-input-power. + If received OSNR at min-input-power is lower than this value, + an increased level of bit-errors post-FEC needs to be + expected."; + } + + leaf min-input-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Minimum value required input power in dBm of an optical channel + at the receiver (Rx) according to the given min-rx-osnr value. If + the input-power is lower it is expected to introduce an OSNR + penalty."; + } + + leaf max-input-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Maximum tolerated input power in dBm at the receiver (Rx) + of the coherence transceiver, which if exceeded can cause an + overload."; + } + + leaf max-chromatic-dispersion { + type decimal64 { + fraction-digits 2; + } + units ps-nm; + description + "Maximum chromatic-dispersion, accumulated value, supported by the + optical channel associated to the associated transmission mode + (operational model), expressed in picoseconds / nanometer (ps/nm)."; + } + + leaf max-differential-group-delay { + type decimal64 { + fraction-digits 2; + } + units ps; + description + "Maximum differential-group-delay, absolute value, supported by the + optical channel associated to the associated tranmission mode + (operational model), expressed in picoseconds (ps)."; + } + + leaf max-polarization-dependent-loss { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "Maximum polarization-dependent-loss accumulated value, supported by the + optical channel associated to the associated transmission mode + (operational model), expressed in decibels (dB)"; + } + } + + grouping operational-mode-descriptor-explicit-top { + description + "Definition of proprietary or non-standard operational-modes, which can be + uniformly characterized by the set of attributes included in their + operational-mode-capabilities which defines the related signal physical + impairment related aspects such Rx and Tx associated attributes and tolerances; + and its optical-channel-config-value-constraints, which defines what are the + allowed values to be configured at the oc-component:optical-channel instance + configured to this mode."; + + container explicit-mode { + description + "Explicit definition of the operational-mode. Typically this is used + for non-standard/proprietary modes defined by the terminal-device + vendor and it is self-described by the capabilities included in + the subtree underneath."; + + container operational-mode-capabilities{ + description + "Set of attributes which characterizes the operational-mode for optimal + optical-channel transmission and receiver functions. This attributes + are intending to describe all the relevant data used during the + network planning phase, to estimate the physical-impairment + tolerances which can be introduced by the DWDM optical path, + while assuring optimal transmission function."; + + container state { + config false; + description + "Operational-mode explicit mode capabilities state container."; + + uses operational-mode-descriptor-explicit-capabilities-state; + } + container fec { + description + "The Forward Error Coding (FEC) coding schema used, + including the name, overhead, pre-fec-ber threshold and + gain properties."; + + container state { + config false; + description + "FEC state attributes top container."; + + uses fec-codes-attributes; + } + } + + container penalties { + description + "Enconsing list's container."; + + list penalty { + key "parameter-and-unit up-to-boundary"; + description + "Penalties includes contributions from different impairments including + cd, pmd, low RX Power, pdl,... + - For parameter values below lowest up-to-boundary value, the penalty is 0. + - For parameter values between lowest and highest up-to-boundary + values, penalty could be linearly interpolated. + - For parameter values above highest up-to-boundary value, the penalty is the one + included within penalty-value attribute associated to the highest up-to-boundary"; + + leaf parameter-and-unit { + type leafref { + path "../state/parameter-and-unit"; + } + description + "Impairment and unit leading to the penalty (i.e., cd-ps)"; + } + + leaf up-to-boundary { + type leafref { + path "../state/up-to-boundary"; + } + description + "defines the upper (for positive values) and lower (for negative values) + limit for which the penalty value is valid."; + } + + container state { + config false; + description + "Penalties list element's state attributes top container."; + uses penalties-list-element-attributes; + } + } + } + + container filter { + description + "This container includes information which characterises the filter at + transceiver transmission for the given operational-mode."; + + container state { + config false; + description + "Filter's state attributes top container."; + uses filter-attributes-top; + } + } + } + + container optical-channel-config-value-constraints{ + description + "Set of constraints of the configuration attributes + of the optical-channel associated to the selected + operational-mode."; + + container state { + config false; + description + "Operational-mode explicit mode config value constrains state top + container."; + + uses operational-mode-descriptor-explicit-config-constraints-state; + } + } + } + } + + grouping operational-mode-descriptor-standard-state { + description + "Standard mode features attributes grouping."; + + leaf standard-mode { + type oc-opt-term-prop-types:standard-mode; + description + "G.698.2 (11/18) standard mode"; + } + } + + grouping operational-mode-descriptor-standard-top { + description + "Standard mode features description grouping. It is used if the + 'mode-type' attribute is set to 'TRANSCEIVER_MODE_TYPE_STANDARD"; + + container G.698.2 { + description + "ITU-T G.698.2 (11/18) standard mode that guarantees interoperability. + It must be an string with the following format: + B-DScW-ytz(v) where all these attributes are conformant + to the ITU-T G.698.2 (11/18) recommendation."; + + container state { + config false; + description + "Operational-mode standard mode state top container."; + + uses operational-mode-descriptor-standard-state; + } + } + } + + grouping operational-mode-descriptor-state{ + description + "Top-level operational-mode-features grouping definitions"; + + leaf mode-id { + type uint16; + description + "Two-octet encoding of the vendor-defined operational + mode"; + } + + leaf mode-type { + type identityref{ + base oc-opt-term-prop-types:TRANSCEIVER_MODE_TYPE; + } + description + "Indicates whether the transceiver's mode is a standard + mode, an organizational mode or an explicit mode."; + } + } + + grouping operational-mode-top{ + description + "top-level operational-mode definitions"; + + container operational-modes { + config false; + description + "Indicates the transceiver's list of supported operational + modes and its associated transmission features"; + + list mode-descriptor { + key "mode-id"; + description + "List of operational modes supported by the platform. + The operational mode provides a platform-defined summary + of information such as symbol rate, modulation, pulse + shaping, etc."; + + leaf mode-id { + type leafref { + path "../state/mode-id"; + } + description + "Reference to mode-id"; + } + + container state { + description + "Static features or properties which characterize the + operational mode."; + + uses operational-mode-descriptor-state; + } + uses operational-mode-descriptor-standard-top; + uses operational-mode-descriptor-explicit-top; + } + } + } + + uses operational-mode-top; +} diff --git a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang new file mode 100644 index 000000000..13a019294 --- /dev/null +++ b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang @@ -0,0 +1,457 @@ +module openconfig-terminal-device-property-types { + + // Yang version can be "1" without mandatory fields. + // Yang version 1.1 allows mandatory fiels in an augment + // https://tools.ietf.org/html/rfc7950#section-7.17 + // If the augmentation adds mandatory nodes (see Section 3) that + // represent configuration to a target node in another module, the + // augmentation MUST be made conditional with a "when" statement. + + yang-version "1"; + + // namespace + namespace "http://example.net/yang/openconfig-terminal-device-property-types"; + prefix "oc-opt-term-prop-types"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-transport-types { prefix oc-opt-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Supplementary module to expose identity types for the + openconfig-terminal-device-properties model. This model includes + definitions of the set of modulation format, FEC codes and adjustment + granularity types use in the reffered model."; + + oc-ext:openconfig-version "0.1.0"; + + + // Revisions + revision "2022-03-08" { + description "Initial version to provide the initial set of identities + used in the openconfig-terminal-device-properties model."; + reference "0.1.0"; + } + + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig-properties"; + + + typedef standard-mode { + type string; + description + "ITU-T G.698.2 standard mode that guarantees interoperability. + It must be an string with the following format: + B-DScW-ytz(v) where all these attributes are conformant + to the ITU-T recomendation"; + reference "ITU-T G.698.2 (11/2018)"; + } + + typedef bit-rate { + type identityref { + base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE; + } + description + "Rounded bit rate of the tributary signal delivered by the + optical channel associated to the specifc operational mode. + Exact bit rate will be refined by protocol selection at the + associated tributary logical channel."; + } + + typedef pulse-shaping-type { + type identityref { + base SHAPING_TYPE; + } + description + "Pulse/spectral shaping type associated to the mode."; + } + + typedef modulation-format { + type identityref { + base MODULATION_FORMAT; + } + description + "Optical modulation format associated to the mode"; + } + + typedef fec-coding { + type identityref { + base FEC; + } + description + "FEC Type identityref, e.g., FEC_G"; + } + + typedef grid-type { + type identityref { + base GRID_TYPE; + } + description + "Type for frequency ITU-T grid specification attributes."; + } + + typedef adjustment-granularity { + type identityref { + base ADJUSTMENT_GRANULARITY; + } + description + "Type definition for the possible adjustment granularity attributes. + As per ITU-T G.694.1 (10/2020), it is used to calculate nominal + central frequency."; + } + + typedef impairment-type { + type identityref { + base IMPAIRMENT_TYPE; + } + description + "Definition of impairment type and unit used in penaty list"; + } + + identity SHAPING_TYPE { + description + "Base identity for pulse-shaping-type, to help characterize the + filter type included in the transceiver which support the mode."; + } + + identity RC { + base SHAPING_TYPE; + description + "Raised-cosine filter shape."; + } + + identity RRC { + base SHAPING_TYPE; + description + "Root-raised-cosine filter shape."; + } + + identity OFF { + base SHAPING_TYPE; + description + "No filter."; + } + + identity IMPAIRMENT_TYPE { + description + "Base identity for impairment type and units, used in penaty list."; + } + + identity CD_PS_NM { + base IMPAIRMENT_TYPE; + description + "Chromatic Dispersion (CD) in picoseconds per nanometer units."; + } + + identity PMD_PS { + base IMPAIRMENT_TYPE; + description + "Polarization Mode Dispersion (PMD) in picoseconds units."; + } + + identity PDL_DB { + base IMPAIRMENT_TYPE; + description + "Polarization Dependent Loss (PDL) in decibels (dB) units."; + } + + identity GRID_TYPE { + description + "Base identity for Grid Type definitions according to ITU-T + ITU-T G.694.1 (10/2020) standard which defines the possible + configurable values of the optical channel component's + central frequency attribute."; + } + + identity DWDM { + base GRID_TYPE; + description + "Fixed frequency grid in C & L bands as specified + in ITU-T G.694.1 (10/2020)"; + } + + identity CWDM { + base GRID_TYPE; + description + "Fixed frequency grid as specified in ITU-T G.694.1 (10/2020)."; + } + + identity FLEX { + base GRID_TYPE; + description + "Flexible frequency grid as specified in ITU-T G.694.1 (10/2020)."; + } + + identity GRIDLESS { + base GRID_TYPE; + description + "No grid"; + } + + identity UNSPECIFIED { + base GRID_TYPE; + description + "Unspecified/proprietary frequency grid"; + } + + identity ADJUSTMENT_GRANULARITY { + description + "Base identity for the adjustment granularity or nominal central + frequency granularity, according to ITU-T G.694.1 (10/2020) standard, + defined as the minimun spectrum separation between the central + frequencies of two contiguous optical channels"; + } + + identity G_100GHZ { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value of 100 gigahertz."; + } + + identity G_50GHZ { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value of 50 gigahertz."; + } + + identity G_25GHZ { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value of 25 gigahertz."; + } + + identity G_12_5GHZ { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value of 12.5 gigahertz."; + } + + identity G_6_25GHZ { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value of 6.25 gigahertz."; + } + + identity G_3_125GHZ { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value of 3.125 gigahertz."; + } + + identity UNCONSTRAINED { + base ADJUSTMENT_GRANULARITY; + description + "Adjustment granularity value unconstrained, i.e., + no minimun spacing between channels is defined."; + } + + + identity FEC { + description + "Forward Error Correction base identity."; + } + + identity FEC_HD { + base FEC; + description + "Hard-Decision (HD) Staircase FEC, defined in + ITU-T G.709.2 (07/18)"; + } + + identity FEC_G { + base FEC; + description + "Generic FEC, Reed Solomon (255,239) coding schema, + defined in ITU-T G.975 (10/2000)."; + } + identity FEC_E { + base FEC; + description + "Enhanced FEC (EFEC) from G.975.1 Clause I.4."; + } + identity FEC_O { + base FEC; + description + "OpenROADM 200G Open FEC (oFEC) soft-decision coding + schema."; + } + + identity FEC_C { + base FEC; + description + "OIF 400G concatenated FEC (cFEC) with soft-decision inner + Hamming code and hard-decision outer Staircase code"; + } + + identity FEC_OTHER { + base FEC; + description + "Placeholder identity to refer to any other propiertary or + non-propiertary FEC coding schema non-defined in this model + yet."; + } + + identity MODULATION_FORMAT { + description + "Base identity for identiying the optical modulation + format associated to the operational mode."; + } + + identity MODULATION_FORMAT_BPSK { + base MODULATION_FORMAT; + description + "Binary phase-shift keying (BPSK) modulation format + identity"; + } + + identity MODULATION_FORMAT_DPSK { + base MODULATION_FORMAT; + description + "Differential phase-shift keying (DPSK) modulation format + identity"; + } + + identity MODULATION_FORMAT_QPSK { + base MODULATION_FORMAT; + description + "Quadrature phase-shift keying (QPSK) modulation format + identity"; + } + + identity MODULATION_FORMAT_DP_QPSK { + base MODULATION_FORMAT; + description + "Dual-Polarization Quadrature Phase-Shift Keying (QPSK) + modulation format identity"; + } + + identity MODULATION_FORMAT_8QAM { + base MODULATION_FORMAT; + description + "8-Quadrature Amplitude Modulation (QAM) identity"; + } + + identity MODULATION_FORMAT_DP_8QAM { + base MODULATION_FORMAT; + description + "Dual-Polarization 8-Quadrature Amplitude Modulation (QAM) + identity"; + } + + identity MODULATION_FORMAT_DC_DP_8QAM { + base MODULATION_FORMAT; + description + "Dual-Carrier Dual-Polarization 8-Quadrature Amplitude + Modulation identity"; + } + + identity MODULATION_FORMAT_16QAM { + base MODULATION_FORMAT; + description + "16-Quadrature Amplitude Modulation (QAM) identity"; + } + + identity MODULATION_FORMAT_DP_16QAM { + base MODULATION_FORMAT; + description + "Dual-Polarization 16-Quadrature Amplitude Modulation (QAM) + identity"; + } + + identity MODULATION_FORMAT_DC_DP_16QAM { + base MODULATION_FORMAT; + description + "Dual-Carrier Dual-Polarization 16-Quadrature Amplitude Modulation + (QAM) identity"; + } + + identity MODULATION_FORMAT_32QAM { + base MODULATION_FORMAT; + description + "32-Quadrature Amplitude Modulation (QAM) identity"; + } + + identity MODULATION_FORMAT_DP_32QAM { + base MODULATION_FORMAT; + description + "Dual-Polarization 32-Quadrature Amplitude Modulation (QAM) + identity"; + } + + identity MODULATION_FORMAT_DC_DP_32QAM { + base MODULATION_FORMAT; + description + "Dual-Carrier Dual-Polarization 32-Quadrature Amplitude Modulation + (QAM) identity"; + } + + identity MODULATION_FORMAT_64QAM { + base MODULATION_FORMAT; + description + "64-Quadrature Amplitude Modulation (QAM) identity"; + } + + identity MODULATION_FORMAT_DP_64QAM { + base MODULATION_FORMAT; + description + "Dual-Polarization 64-Quadrature Amplitude Modulation (QAM) + identity"; + } + + identity MODULATION_FORMAT_DC_DP_64QAM { + base MODULATION_FORMAT; + description + "Dual-Carrier Dual-Polarization 64-Quadrature Amplitude Modulation + (QAM) identity"; + } + + identity MODULATION_FORMAT_PAM4 { + base MODULATION_FORMAT; + description + "4-level Pulse Amplitud Modulation (PAM)"; + } + + identity MODULATION_FORMAT_PAM8 { + base MODULATION_FORMAT; + description + "8-level Pulse Amplitud Modulation (PAM)"; + } + + identity MODULATION_FORMAT_PROPRIETARY { + base MODULATION_FORMAT; + description + "Proprietary modulation format."; + } + + identity TRANSCEIVER_MODE_TYPE{ + description + "Base identity for identiying the transceiver's mode category: + Standard or Explicit. This differentiates on the way operational + mode's features are expose by the transceiver device."; + } + + identity TRANSCEIVER_MODE_TYPE_STANDARD{ + base TRANSCEIVER_MODE_TYPE; + description + "Operational model type Standard, according to ITU-T G.698.2, + indicates the mode is interoperable with other transceiver-modules + supporting the same Standard mode."; + } + + identity TRANSCEIVER_MODE_TYPE_EXPLICIT{ + base TRANSCEIVER_MODE_TYPE; + description + "Operational model type Explicit, indicating the description of the + operational mode features follows the model subtree explicit + features description."; + } +} From 55ce9b419944dba14918664823585a1ccca558a0 Mon Sep 17 00:00:00 2001 From: jasdeep-hundal Date: Fri, 29 Apr 2022 14:11:17 -0700 Subject: [PATCH 036/372] Add convergence tracking stats to ATE flow model (#630) * (M) release/models/ate/openconfig-ate-flow.yang - Add ATE leaves for tracking convergence information. --- release/models/ate/openconfig-ate-flow.yang | 22 ++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/release/models/ate/openconfig-ate-flow.yang b/release/models/ate/openconfig-ate-flow.yang index 49a4f8e18..c03d45c42 100644 --- a/release/models/ate/openconfig-ate-flow.yang +++ b/release/models/ate/openconfig-ate-flow.yang @@ -24,7 +24,13 @@ module openconfig-ate-flow { stream of packets whose definition is outside of the context of this module."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.4.0"; + + revision 2022-04-29 { + description + "Add protocol convergence tracking statistics."; + reference "0.4.0"; + } revision 2022-02-16 { description @@ -219,6 +225,20 @@ module openconfig-ate-flow { "The rate, measured in bits per second, at which the flow is being received."; } + + leaf first-packet-latency { + type oc-types:timeticks64; + description + "The time from when the flow was started to when the first packet was + received."; + } + + leaf convergence-time { + type oc-types:timeticks64; + description + "The time from when the first packet was received to when traffic + loss dropped below a minimal threshold value."; + } } grouping flow-counters-state { From 3a5269e4e52d5ca42cd4240111cf224e23e8e381 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Tue, 3 May 2022 15:45:21 -0400 Subject: [PATCH 037/372] Add initial support for L2VPN EVPN extensions for BGP RIB (#439) * Add L2VPN EVPN extensions for BGP RIB (M) release/models/network-instance/openconfig-evpn-types.yang (M) release/models/rib/openconfig-rib-bgp-tables.yang (M) release/models/rib/openconfig-rib-bgp.yang --- .../openconfig-evpn-types.yang | 17 +- .../models/rib/openconfig-rib-bgp-tables.yang | 833 +++++++++++++++++- release/models/rib/openconfig-rib-bgp.yang | 21 +- 3 files changed, 868 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-evpn-types.yang b/release/models/network-instance/openconfig-evpn-types.yang index 2d95214b4..4246426f4 100644 --- a/release/models/network-instance/openconfig-evpn-types.yang +++ b/release/models/network-instance/openconfig-evpn-types.yang @@ -25,7 +25,13 @@ module openconfig-evpn-types { policy. It can be imported by modules that make use of EVPN attributes"; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.2.0"; + + revision "2021-06-21" { + description + "Add types needed for BGP l2vpn evpn support"; + reference "0.2.0"; + } revision "2021-06-16" { description @@ -287,4 +293,13 @@ module openconfig-evpn-types { "Type of MAC address learning procedure"; } + typedef ethernet-tag { + type uint32; + description + "An Ethernet Tag ID is a 32-bit field containing either a 12-bit + or 24-bit identifier that identifies a particular broadcast + domain (e.g., a VLAN) in an EVPN instance."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN page-10"; + } } diff --git a/release/models/rib/openconfig-rib-bgp-tables.yang b/release/models/rib/openconfig-rib-bgp-tables.yang index 4d9875b67..55207176a 100644 --- a/release/models/rib/openconfig-rib-bgp-tables.yang +++ b/release/models/rib/openconfig-rib-bgp-tables.yang @@ -9,6 +9,11 @@ submodule openconfig-rib-bgp-tables { import openconfig-inet-types { prefix oc-inet; } import openconfig-extensions { prefix oc-ext; } import openconfig-policy-types { prefix oc-pol-types; } + import ietf-yang-types { prefix yang; } + + import openconfig-network-instance-types { prefix oc-ni-types; } + import openconfig-evpn-types { prefix oc-evpn-types; } + import openconfig-bgp-types { prefix oc-bgpt; } include openconfig-rib-bgp-attributes; include openconfig-rib-bgp-shared-attributes; @@ -25,7 +30,13 @@ submodule openconfig-rib-bgp-tables { "This submodule contains structural data definitions for BGP routing tables."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2021-06-21" { + description + "Add L2VPN-EVPN BGP RIB Support"; + reference "0.8.0"; + } revision "2019-10-15" { description @@ -311,6 +322,826 @@ submodule openconfig-rib-bgp-tables { } } + grouping l2vpn-evpn-loc-rib-top { + description + "Top-level grouping for L2VPN EVPN routing tables"; + + container loc-rib { + config false; + description + "Container for the L2VPN EVPN BGP LOC-RIB data"; + + uses bgp-common-table-attrs-top; + + container routes { + description + "Enclosing container for list of routes in the routing + table."; + + list route-distinguisher { + description "List of route distinguishers"; + key "route-distinguisher"; + + leaf route-distinguisher { + type leafref { + path "../state/route-distinguisher"; + } + description + "An EVPN instance requires a Route Distinguisher (RD) that is + unique per MAC-VRF"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + container state { + description "Top level container for L2VPN EVPN RDs"; + leaf route-distinguisher { + type oc-ni-types:route-distinguisher; + description + "Route Distinguisher for all supported EVPN route types"; + } + } + uses bgp-evpn-type-one-state; + uses bgp-evpn-type-two-state; + uses bgp-evpn-type-three-state; + uses bgp-evpn-type-four-state; + uses bgp-evpn-type-five-state; + } + } + } + } + + grouping bgp-loc-rib-l2vpn-evpn-attr-refs { + description + "Definitions of common references to attribute sets for + multiple AFI-SAFIs for LOC-RIB tables"; + + leaf attr-index { + type leafref { + path "../../../../../../../../../../../../attr-sets/attr-set/" + + "state/index"; + } + description + "Reference to the common attribute group for the + route"; + } + + leaf community-index { + type leafref { + path "../../../../../../../../../../../../communities/community/" + + "state/index"; + } + description + "Reference to the community attribute for the route"; + } + + leaf ext-community-index { + type leafref { + path "../../../../../../../../../../../../ext-communities/" + + "ext-community/state/index"; + } + description + "Reference to the extended community attribute for the + route"; + } + } + + grouping bgp-evpn-route-path-common-state { + description + "Grouping for BGP L2VPN EVPN route-type common path state information"; + + container paths { + description "List of BGP path attributes for this route"; + + list path { + description "List of paths"; + key "peer-ip peer-path-id source-route-distinguisher source-address-family"; + + uses bgp-evpn-route-path-lefref-common; + + container state { + description "BGP path attributes for this route"; + + uses bgp-evpn-route-path-keys-common; + uses bgp-evpn-route-path-attributes-common; + } + + uses bgp-unknown-attr-top; + + } + } + } + + grouping bgp-evpn-route-path-type2-state { + description + "Grouping for BGP L2VPN EVPN route-type path state information for + route type 2"; + + container paths { + description "List of BGP path attributes for this route"; + + list path { + description "List of paths"; + key "peer-ip peer-path-id source-route-distinguisher source-address-family"; + + uses bgp-evpn-route-path-lefref-common; + + container state { + description "BGP path attributes for this route"; + + uses bgp-evpn-route-path-keys-common; + + leaf esi { + type oc-evpn-types:esi; + description + "The Ethernet Segment Identifier (ESI) identifying the ethernet + segment for this route"; + } + + uses bgp-evpn-route-path-attributes-common; + } + + uses bgp-unknown-attr-top; + + } + } + } + + grouping bgp-evpn-route-path-type5-state { + description + "Grouping for BGP L2VPN EVPN route-type path state information for + route type 5"; + + container paths { + description "List of BGP path attributes for this route"; + + list path { + description "List of paths"; + key "peer-ip peer-path-id source-route-distinguisher source-address-family"; + + uses bgp-evpn-route-path-lefref-common; + + container state { + description "BGP path attributes for this route"; + + leaf esi { + type oc-evpn-types:esi; + description + "The Ethernet Segment Identifier (ESI) identifying the ethernet + segment for this route"; + } + + leaf gateway-ip-address { + type oc-inet:ip-prefix; + description + "The gateway-ip-address for the route"; + } + + uses bgp-evpn-route-path-keys-common; + uses bgp-evpn-route-path-attributes-common; + } + + uses bgp-unknown-attr-top; + + } + } + } + + grouping bgp-evpn-route-path-lefref-common { + description "Common BGP L2VPN EVPN Path Leaf References"; + + leaf peer-ip { + type leafref { + path "../state/peer-ip"; + } + description "The source peer ip address of the imported route"; + } + + leaf peer-path-id { + type leafref { + path "../state/peer-path-id"; + } + description "The source peer path id of the imported route"; + } + + leaf source-route-distinguisher { + type leafref { + path "../state/source-route-distinguisher"; + } + description + "The source route distinguisher is the remote RD source of the + imported route"; + } + + leaf source-address-family { + type leafref { + path "../state/source-address-family"; + } + description "The source address-family of the imported route"; + } + } + + grouping bgp-evpn-route-path-keys-common { + description "Common BGP L2VPN EVPN Path Keys"; + + leaf peer-ip { + type oc-inet:ip-address; + description + "The source peer ip address of the imported route"; + } + + leaf peer-path-id { + type uint32; + description "The source peer path id of the imported route"; + } + + leaf source-route-distinguisher { + type oc-ni-types:route-distinguisher; + description + "The source route distinguisher is the remote RD source of the + imported route"; + } + + leaf source-address-family { + type identityref { + base oc-bgpt:AFI_SAFI_TYPE; + } + description "The source address-family of the imported route"; + } + } + + grouping bgp-evpn-route-path-attributes-common { + description "Common BGP L2VPN EVPN Path Attributes"; + + leaf-list advertised-to-peer { + type oc-inet:ip-address; + description "List of peers to which this path is advertised"; + } + + leaf label { + type string; + description + "MPLS Label field used for route attributes"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf label2 { + type string; + description "MPLS Label2 field used for route attributes"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf bestpath { + type boolean; + description + "BGP can receive multiple paths to the same destination. This + parameter indicates that this path is the bestpath to install + in the IP routing table and use for traffic forwarding"; + } + + leaf multipath { + type boolean; + description + "BGP can use multiple paths to reach a destination allowing + BGP to load-balance traffic. This parameter indicates that this + path is marked as multipath"; + } + + leaf backup { + type boolean; + description "BGP path marked as a backup path"; + } + + uses bgp-common-route-annotations-state; + uses bgp-loc-rib-l2vpn-evpn-attr-refs; + } + + grouping bgp-evpn-type-one-key-refs { + description + "Key references to support operational state structure for + BGP EVPN Ethernet Auto-discovery routes. + + For the purpose of BGP route key processing, only the Ethernet Segment + Identifier and Ethernet Tag ID are considered to be part of the prefix in + the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + + leaf esi { + type leafref { + path "../state/esi"; + } + description + "The Ethernet Segment Identifier (ESI) is a unique non-zero + identifier that identifies an Ethernet segment"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf ethernet-tag { + type leafref { + path "../state/ethernet-tag"; + } + description + "The Ethernet tag identifies a particular broadcast domain. An EVPN + instance consists of one or more broadcast domains"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + } + + grouping bgp-evpn-type-one-state { + description "Grouping for BGP EVPN Ethernet Auto-discovery routes"; + container type-one-ethernet-auto-discovery { + description "Top level container BGP EVPN Ethernet Auto-discovery routes"; + list type-one-route { + key "esi ethernet-tag"; + description + "List of BGP EVPN Ethernet Auto-discovery routes + + For the purpose of BGP route key processing, only the Ethernet Segment + Identifier and Ethernet Tag ID are considered to be part of the prefix in + the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + uses bgp-evpn-type-one-key-refs; + + container state { + description + "Operational state data for BGP EVPN Ethernet Auto-discovery route + entries in the BGP LOC-RIB"; + + leaf esi { + type oc-evpn-types:esi; + description + "The Ethernet Segment Identifier (ESI) identifying the ethernet + segment for this route"; + } + + leaf ethernet-tag { + type oc-evpn-types:ethernet-tag; + description + "The Ethernet tag identifying the broadcast domain for this + route"; + } + + uses bgp-loc-rib-attr-state; + uses bgp-loc-rib-route-annotations-state; + } + + uses bgp-evpn-route-path-common-state; + } + } + } + + grouping bgp-evpn-type-two-key-refs { + description + "Key references to support operational state structure for + MAC_IP Advertisement routes. + + For the purpose of BGP route key processing, only the Ethernet Tag ID, + MAC Address Length, MAC Address, IP Address Length, and IP Address fields + are considered to be part of the prefix in the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + leaf ethernet-tag { + type leafref { + path "../state/ethernet-tag"; + } + description + "The Ethernet tag identifies a particular broadcast domain. An EVPN + instance consists of one or more broadcast domains"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf mac-address { + type leafref { + path "../state/mac-address"; + } + description + "The PEs forward packets that they receive based on the destination + MAC address"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf mac-length { + type leafref { + path "../state/mac-length"; + } + description + "The MAC Address Length for the MAC address defined in mac-address"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf ip-prefix { + type leafref { + path "../state/ip-prefix"; + } + description + "The IPv4 or IPv6 address carried in a MAC_IP Advertisement route"; + } + + leaf ip-length { + type leafref { + path "../state/ip-length"; + } + description + "The IPv4 or IPv6 address prefix length for the address defined in + ip-prefix"; + } + } + + grouping bgp-evpn-type-two-state { + description "Grouping for MAC_IP Advertisement L2VPN EVPN routes"; + container type-two-mac-ip-advertisement { + description + "Top level container for MAC_IP Advertisement L2VPN EVPN routes"; + list type-two-route { + key "ethernet-tag mac-address mac-length ip-prefix ip-length"; + description + "List of MAC_IP Advertisement L2VPN EVPN routes + + For the purpose of BGP route key processing, only the Ethernet Tag ID, + MAC Address Length, MAC Address, IP Address Length, and IP Address fields + are considered to be part of the prefix in the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + uses bgp-evpn-type-two-key-refs; + + container state { + description + "Operational state data MAC_IP Advertisement L2VPN EVPN route + entries in the BGP LOC-RIB"; + + leaf ethernet-tag { + type oc-evpn-types:ethernet-tag; + description + "The Ethernet tag identifying the broadcast domain for this + route"; + } + + leaf mac-address { + type yang:mac-address; + description + "The MAC address that is learned on a PE from a CE that is + connected to it or learned from other PEs"; + } + + leaf mac-length { + type uint32; + description + "The MAC address length for the mac-address"; + } + + leaf ip-prefix { + type oc-inet:ip-prefix; + description + "The IP address for end-host reachability information"; + } + + leaf ip-length { + type uint32; + description + "The ip-prefix length for the IP address specified by ip-prefix"; + } + + uses bgp-loc-rib-attr-state; + uses bgp-loc-rib-route-annotations-state; + } + + uses bgp-evpn-route-path-type2-state; + } + } + } + + grouping bgp-evpn-type-three-key-refs { + description + "Key references to support operational state structure for Inclusive + Multicast Ethernet Tag routes. + + For the purpose of BGP route key processing, only the Ethernet Tag ID, + IP Address Length, and Originating Router's IP Address fields are + considered to be part of the prefix in the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + leaf ethernet-tag { + type leafref { + path "../state/ethernet-tag"; + } + description + "The Ethernet tag identifies a particular broadcast domain. An EVPN + instance consists of one or more broadcast domains"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf originating-router-ip { + type leafref { + path "../state/originating-router-ip"; + } + description + "Reference to the originating-router-ip list key"; + } + + leaf originator-ip-length { + type leafref { + path "../state/originator-ip-length"; + } + description + "Reference to the originating router ip length list key"; + } + } + + grouping bgp-evpn-type-three-state { + description + "Grouping for Inclusive Multicast Ethernet Tag L2VPN EVPN routes"; + container type-three-inclusive-multicast-ethernet-tag { + description + "Top level container for Inclusive Multicast Ethernet Tag L2VPN EVPN + routes"; + + list type-three-route { + key "ethernet-tag originating-router-ip originator-ip-length"; + description + "List of Inclusive Multicast Ethernet Tag L2VPN EVPN routes + + For the purpose of BGP route key processing, only the Ethernet Tag ID, + IP Address Length, and Originating Router's IP Address fields are + considered to be part of the prefix in the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + uses bgp-evpn-type-three-key-refs; + + container state { + description + "Operational state data for Inclusive Multicast Ethernet Tag L2VPN + EVPN entries in the BGP LOC-RIB"; + + leaf ethernet-tag { + type oc-evpn-types:ethernet-tag; + description + "The Ethernet tag identifying the broadcast domain for this + route"; + } + + leaf originating-router-ip { + type oc-inet:ip-prefix; + description + "The Originating Router's IP Address"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf originator-ip-length { + type uint32; + description + "The ip-prefix length for the route"; + } + + uses bgp-loc-rib-attr-state; + uses bgp-loc-rib-route-annotations-state; + } + + uses bgp-evpn-route-path-common-state; + } + } + } + + grouping bgp-evpn-type-four-key-refs { + description + "Key references to support operational state structure for Ethernet + Segment routes. + + For the purpose of BGP route key processing, only the Ethernet Segment ID, + IP Address Length, and Originating Router's IP Address fields are + considered to be part of the prefix in the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + leaf esi { + type leafref { + path "../state/esi"; + } + description + "The Ethernet Segment Identifier (ESI) is a unique non-zero + identifier that identifies an Ethernet segment"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf originating-router-ip { + type leafref { + path "../state/originating-router-ip"; + } + description + "Reference to the ip-prefix list key"; + } + + leaf originator-ip-length { + type leafref { + path "../state/originator-ip-length"; + } + description + "Reference to the ip-length list key"; + } + } + + grouping bgp-evpn-type-four-state { + description "Grouping for Ethernet Segment L2VPN EVPN routes"; + container type-four-ethernet-segment { + description "Top level container for Ethernet Segment L2VPN EVPN routes"; + + list type-four-route { + key "esi originating-router-ip originator-ip-length"; + description + "List of Ethernet Segment L2VPN EVPN routes + + For the purpose of BGP route key processing, only the Ethernet Segment ID, + IP Address Length, and Originating Router's IP Address fields are + considered to be part of the prefix in the NLRI"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + + uses bgp-evpn-type-four-key-refs; + + container state { + description + "Operational state data for Ethernet Segment L2VPN EVPN route + entries in the BGP LOC-RIB"; + + leaf esi { + type oc-evpn-types:esi; + description + "The Ethernet Segment Identifier (ESI) identifying the ethernet + segment for this route"; + } + + leaf originating-router-ip { + type oc-inet:ip-prefix; + description + "The originating router ip"; + } + + leaf originator-ip-length { + type uint32; + description + "The originating router ip length"; + } + + uses bgp-loc-rib-attr-state; + uses bgp-loc-rib-route-annotations-state; + + } + + uses bgp-evpn-route-path-common-state; + } + } + } + + grouping bgp-evpn-type-five-key-refs { + description + "Key references to support operational state structure for IP Prefix + Advertisement routes. + + For the purpose of BGP route key processing, only The RD, Ethernet Tag ID, + IP prefix length, and IP prefix are part of the route key used by BGP to + compare routes"; + reference "RFC9136: IP Prefix Advertisement in Ethernet VPN (EVPN)"; + + leaf ethernet-tag { + type leafref { + path "../state/ethernet-tag"; + } + description + "The Ethernet tag identifies a particular broadcast domain. An EVPN + instance consists of one or more broadcast domains"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf ip-prefix-length { + type leafref { + path "../state/ip-prefix-length"; + } + description + "Reference to the ip-prefix-length list key"; + } + + leaf ip-prefix { + type leafref { + path "../state/ip-prefix"; + } + description + "Reference to the ip-prefix list key"; + } + } + + grouping bgp-evpn-type-five-state { + description "Grouping for IP Prefix Advertisement L2VPN EVPN routes"; + container type-five-ip-prefix { + description + "Top level container for IP Prefix Advertisement L2VPN EVPN routes"; + list type-five-route { + key "ethernet-tag ip-prefix-length ip-prefix"; + description + "List of IP Prefix Advertisement L2VPN EVPN routes + + For the purpose of BGP route key processing, only The RD, Ethernet Tag ID, + IP prefix length, and IP prefix are part of the route key used by BGP to + compare routes"; + reference "RFC9136: IP Prefix Advertisement in Ethernet VPN (EVPN)"; + + uses bgp-evpn-type-five-key-refs; + + container state { + description + "Operational state data for IP Prefix Advertisement L2VPN EVPN + route entries in the BGP LOC-RIB"; + + leaf ethernet-tag { + type oc-evpn-types:ethernet-tag; + description + "The Ethernet tag identifying the broadcast domain for this + route"; + } + + leaf ip-prefix-length { + type string; + description + "The ip-prefix length for the route"; + } + + leaf ip-prefix { + type oc-inet:ip-prefix; + description + "The ip-prefix for the route"; + } + + uses bgp-loc-rib-attr-state; + uses bgp-loc-rib-route-annotations-state; + } + + uses bgp-evpn-route-path-type5-state; + } + } + } + + grouping l2vpn-evpn-adj-rib-top { + description + "Top-level grouping for L2VPN-EVPN Adj-RIB table"; + + container neighbors { + config false; + description + "Enclosing container for neighbor list"; + + list neighbor { + key "neighbor-address"; + description + "List of neighbors (peers) of the local BGP speaker"; + + leaf neighbor-address { + type leafref { + path "../state/neighbor-address"; + } + description + "Reference to the list key"; + } + + container state { + description + "Operational state for each neighbor BGP Adj-RIB"; + + leaf neighbor-address { + type oc-inet:ip-address; + description + "IP address of the BGP neighbor or peer"; + } + } + + container adj-rib-in-pre { + description + "Per-neighbor table containing the NLRI updates + received from the neighbor before any local input + policy rules or filters have been applied. This can + be considered the 'raw' updates from the neighbor."; + } + + container adj-rib-in-post { + description + "Per-neighbor table containing the paths received from + the neighbor that are eligible for best-path selection + after local input policy rules have been applied."; + } + + container adj-rib-out-pre { + description + "Per-neighbor table containing paths eligble for + sending (advertising) to the neighbor before output + policy rules have been applied"; + } + + container adj-rib-out-post { + description + "Per-neighbor table containing paths eligble for + sending (advertising) to the neighbor after output + policy rules have been applied"; + } + } + } + } + grouping bgp-adj-rib-key-refs { description "Key references to support operational state structure for diff --git a/release/models/rib/openconfig-rib-bgp.yang b/release/models/rib/openconfig-rib-bgp.yang index 8920fcf18..ff8784a69 100644 --- a/release/models/rib/openconfig-rib-bgp.yang +++ b/release/models/rib/openconfig-rib-bgp.yang @@ -67,7 +67,13 @@ module openconfig-rib-bgp { eligible for sending (advertising) to the neighbor after output policy rules have been applied."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2021-06-21" { + description + "Add L2VPN-EVPN BGP RIB Support"; + reference "0.8.0"; + } revision "2019-10-15" { description @@ -222,6 +228,19 @@ module openconfig-rib-bgp { uses ipvX-srte-policy-locrib-top; uses ipvX-srte-policy-adjrib-top; } + + container l2vpn-evpn { + when "../afi-safi-name = 'oc-bgpt:L2VPN_EVPN'" { + description + "Include this container for l2vpn evpn route-types"; + } + description + "Routing tables for l2vpn evpn -- active when the + afi-safi name is l2vpn-evpn"; + + uses l2vpn-evpn-loc-rib-top; + uses l2vpn-evpn-adj-rib-top; + } } } } From 23082667d50341885f6ab0d2d3ba460b525a4d3f Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Tue, 3 May 2022 15:48:23 -0400 Subject: [PATCH 038/372] Add initial support for EVPN VXLAN Overlay Endpoint Oper Data (#437) (M) release/models/network-instance/openconfig-evpn.yang * Add support for vxlan endpoint oper data * Clarify types of BUM traffic support --- .../network-instance/openconfig-evpn.yang | 220 +++++++++++++++++- 1 file changed, 219 insertions(+), 1 deletion(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index 6c98b26ea..49301ebb3 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -12,6 +12,7 @@ module openconfig-evpn { import openconfig-inet-types { prefix oc-inet; } import openconfig-interfaces { prefix oc-if; } import openconfig-bgp-types { prefix oc-bgp-types; } + import openconfig-types { prefix oc-types; } // meta organization @@ -39,7 +40,13 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "0.3.0"; + + revision "2021-06-28" { + description + "Add vxlan endpoint oper data"; + reference "0.3.0"; + } revision "2021-06-11" { description @@ -1061,5 +1068,216 @@ module openconfig-evpn { uses evpn-vxlan-parameters-config; } + + container endpoint-peers { + description + "Top level container for state information related to peer VXLAN Tunnel + Endpoints(VTEPs) learned by the local VTEP in the default network + instance"; + config false; + + list endpoint-peer { + key "peer-address"; + description "List of VTEP peers and associated state information"; + + leaf peer-address { + type leafref { + path '../state/peer-address'; + } + description "IP address for the VTEP peer"; + } + + container state { + config false; + description + "Container for state parameters related to this VTEP peer"; + uses evpn-endpoint-peer-state; + } + } + } + + container endpoint-vnis { + description + "Top level container for state information related to Layer 2 virtual + network identifiers (L2VNIs) and Layer 3 virtual network identifiers + (L3VNIs) that are learned on the local VXLAN Tunnel End Point from + remote VTEPs in the default network instance"; + config false; + + list endpoint-vni { + key "vni"; + description "List of L2VNIs and L3VNIs learned on the local VTEP"; + + leaf vni { + type leafref { + path '../state/vni'; + } + description "L2VNI or L3VNI Identifier"; + } + + container state { + config false; + description + "Container for state parameters related to this L2VNI or L3VNI"; + uses evpn-endpoint-vni-state; + } + } + } + } + + grouping evpn-endpoint-peer-state { + description + "Grouping for state information related to peer VXLAN Tunnel + Endpoints(VTEPs) learned by the local VTEP"; + + leaf peer-address { + type oc-inet:ip-address; + description "IP address of the remote VXLAN Tunnel Endpoint peer"; + } + + leaf peer-state { + type enumeration { + enum UP { + description + "Operational status of the remote VTEP to indicate that the peer + status is UP"; + } + enum DOWN { + description + "Operational status of the remote VTEP to indicate that the peer + status is DOWN"; + } + } + description "State parameters related to the remote VTEP peer state"; + } + + leaf uptime { + type oc-types:timeticks64; + description + "This timestamp indicates the time elapsed relative to the moment that + the remote VTEP peer was discovered."; + } + + leaf control-plane-vnis { + type string; + description + "The control-plane VNIs are all of the VNIs that are discovered by the + control-plane behind this peer VTEP"; + } + + leaf router-mac { + type oc-yang:mac-address; + description "MAC address of the remote VTEP"; + } + } + + grouping evpn-endpoint-vni-state { + description + "Grouping for L2VNI and L3VNI state information learned on the + local VXLAN Tunnel End Point from remote VTEPs"; + + leaf vni { + type oc-evpn-types:evi-id; + description "L2VNI or L3VNI Identifier"; + } + + leaf multidestination-traffic { + type union { + type oc-inet:ip-address; + type enumeration { + enum STATIC_INGRESS_REPLICATION { + description + "Static ingress replication mode."; + } + enum BGP_INGRESS_REPLICATION { + description + "BGP EVPN ingress replication mode. It includes the ability to + signal a P2MP LSP for the EVPN Inclusive Provider Tunnel + for BUM traffic"; + } + } + } + description + "The data plane for overlays needs to handle the transport of + multidestination traffic. Multidestination traffic is typically + referred to as (BUM) which stands for broadcast, unknown unicast, + or multicast. The two most common methods that can accommodate this + replication and transport in the underlay are IP multicast and + ingress replication + (also called head-end replication or unicast mode)."; + } + + leaf learning-mode { + type oc-evpn-types:learning-mode; + description + "Indicates whether the learning mode for this VNI is either + control-plane or data-plane"; + } + + leaf vni-type { + type enumeration { + enum L2 { + description + "This is a Layer 2 service virtual network identifier (L2VNI) + that is used for communication within the same subnet or + broadcast domain"; + } + enum L3 { + description + "This is a Layer 3 service virtual network identifier (L3VNI) + or VRF VNI that is used for communication between subnets"; + } + } + description "The type of virtual network identfier"; + } + + leaf vni-state { + type enumeration { + enum UP { + description + "Operational status of the virtual network identifier (VNI) to + indicate that it is UP"; + } + enum DOWN { + description + "Operational status of the virtual network identifier (VNI) to + indicate that it is DOWN"; + } + } + description "Operational state of the L2VNI or L3VNI"; + } + + leaf svi-state { + type enumeration { + enum UP { + description + "Operational status of the SVI mapped to the L3VNI used for routing + between subnets to indicate the SVI is UP"; + } + enum DOWN { + description + "Operational status of the SVI mapped to the L3VNI used for routing + between subnets to indicate the SVI is DOWN"; + } + } + description + "Operational status of the SVI mapped to the L3VNI that is used for + routing between subnets in the VXLAN fabric"; + } + + leaf bridge-domain { + type uint32; + description + "This reflects the configured VLAN or Bridge Domain that maps to this + L2VNI in the VXLAN fabric"; + } + + leaf l3-vrf-name { + type string; + description + "This refects the configured VRF instance that maps to this L3VNI + that is used for routing between subnets in the VXLAN fabric"; + } + } } From 846dbe0b06d1f4b39c6d7151bc34dbed18882c84 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Tue, 3 May 2022 16:15:45 -0400 Subject: [PATCH 039/372] Add vni-label and tunnel-src-ip-address properties under afts next-hops to support vxlan (#570) (M) release/models/aft/openconfig-aft-common.yang (M) release/models/aft/openconfig-aft-ethernet.yang * Add vni-label property under AFTS next-hops * Add tunnel-src-ip-address property under next-hops --- release/models/aft/openconfig-aft-common.yang | 31 ++++++++++++++++++- .../models/aft/openconfig-aft-ethernet.yang | 8 ++++- release/models/aft/openconfig-aft-ipv4.yang | 8 ++++- release/models/aft/openconfig-aft-ipv6.yang | 8 ++++- release/models/aft/openconfig-aft-mpls.yang | 8 ++++- release/models/aft/openconfig-aft-pf.yang | 8 ++++- release/models/aft/openconfig-aft.yang | 8 ++++- 7 files changed, 72 insertions(+), 7 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index d0f248b13..d72e57a21 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -10,6 +10,7 @@ submodule openconfig-aft-common { import openconfig-mpls-types { prefix "oc-mplst"; } import openconfig-policy-types { prefix "oc-pol-types"; } import openconfig-aft-types { prefix "oc-aftt"; } + import openconfig-evpn-types { prefix "oc-evpn-types"; } organization "OpenConfig working group"; @@ -22,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description @@ -142,6 +149,7 @@ submodule openconfig-aft-common { uses aft-common-entry-nexthop-state; uses aft-labeled-entry-state; + uses aft-evpn-entry-state; } container ip-in-ip { @@ -230,6 +238,27 @@ submodule openconfig-aft-common { } } + grouping aft-evpn-entry-state { + description + "Operational state for evpn related information in forwarding entry"; + + leaf vni-label { + type oc-evpn-types:evi-id; + description + "Where applicable, the next hop label representing the virtual + network identifier (VNI) for the forwarding entry. This leaf is + applicable only to next-hops which include VXLAN encapsulation + header information"; + } + + leaf tunnel-src-ip-address { + type oc-inet:ip-address; + description + "Where applicable this represents the tunnel source ip address. + For VXLAN this represents the source VTEP ip address"; + } + } + grouping aft-common-entry-nexthop-state { description "Parameters relating to a next-hop."; diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 4ad86608d..abb9a7530 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index cfa2be090..d249f33fa 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 976f609a1..1d07df253 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 2afe91c06..0e3c57ba3 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 73418df5a..3b40c85eb 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 40ae251e7..9ba09eae7 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -40,7 +40,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2022-01-26" { + description + "Add vni-label and tunnel-src-ip-address properties under next-hops"; + reference "0.10.0"; + } revision "2021-12-09" { description From e3fa98e0d27cf7fecf75c71d31316f45c83ddfd6 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Wed, 4 May 2022 13:20:24 -0400 Subject: [PATCH 040/372] Add L2RIB EVPN state extensions (#527) (M) release/models/network-instance/openconfig-network-instance-l2.yang * Add support for L2RIB state * Remove vlan as a key for l2rib entries (M) release/models/network-instance/openconfig-network-instance.yang * update version --- .../openconfig-network-instance-l2.yang | 304 +++++++++++++++++- .../openconfig-network-instance.yang | 8 +- 2 files changed, 310 insertions(+), 2 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index dd7ee2ee3..fb95574b8 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -8,6 +8,7 @@ submodule openconfig-network-instance-l2 { import openconfig-extensions { prefix "oc-ext"; } import openconfig-interfaces { prefix "oc-if"; } import ietf-yang-types { prefix "yang"; } + import ietf-inet-types { prefix "inet"; } import openconfig-evpn-types { prefix oc-evpn-types; } import openconfig-evpn { prefix "oc-evpn"; } @@ -23,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-04-20" { + description + "Add support for l2rib state data"; + reference "1.1.0"; + } revision "2022-04-19" { description @@ -217,6 +224,7 @@ submodule openconfig-network-instance-l2 { uses oc-evpn:evpn-mac-mobility-top; uses oc-evpn:evpn-arp-proxy-top; uses oc-evpn:evpn-nd-proxy-top; + uses l2ni-l2rib-top; } } @@ -410,4 +418,298 @@ submodule openconfig-network-instance-l2 { } } } + + grouping l2ni-l2rib-top { + description + "Top-level grouping for l2rib MAC and MAC-IP table list"; + + container l2rib { + config false; + description + "Operational state container for MAC address and MAC-IP address + information that is learned and installed into the MAC VRF Layer 2 + Routing Information Base (L2RIB)"; + + container mac-table { + description + "Operational state container for MAC address information installed + into the MAC VRF of the L2RIB"; + + container entries { + description + "Enclosing container for list of MAC address entries"; + + list entry { + key "mac-address"; + description "List of learned MAC addresses"; + + leaf mac-address { + type leafref { + path "../state/mac-address"; + } + description "Leafref of MAC address object"; + } + + container state { + config false; + description + "Operational state data for L2RIB MAC table object entry"; + uses l2ni-l2rib-mac-table-state; + } + + container producers { + description "Source producers for each MAC Table entry"; + list producer { + key "producer"; + description + "List of producers for each MAC table entry"; + + leaf producer { + type leafref { + path "../state/producer"; + } + description + "Reference to producer list key"; + } + + container state { + config false; + description "State container for L2RIB MAC Table Entries"; + uses l2ni-l2rib-common-producer-state; + uses l2ni-l2rib-mac-table-producer-state; + } + } + } + } + } + uses l2ni-l2rib-common-next-hop-state; + } + + container mac-ip-table { + description + "Operational state container for MAC-IP address information installed + into the MAC VRF of the L2RIB"; + + container entries { + description + "Enclosing container for list of MAC-IP address entries"; + + list entry { + key "mac-address host-ip"; + description "List of learned MAC-IP addresses"; + + leaf mac-address { + type leafref { + path "../state/mac-address"; + } + description "Leafref of MAC-IP address object"; + } + + leaf host-ip { + type leafref { + path "../state/host-ip"; + } + description "IP address of the Customer Edge device"; + } + + container state { + config false; + description + "Operational state data for L2RIB MAC-IP table object entry"; + uses l2ni-l2rib-mac-ip-table-state; + } + + container producers { + description "Source producers for each MAC-IP Table entry"; + list producer { + key "producer"; + description + "List of producers for each MAC-IP table entry"; + + leaf producer { + type leafref { + path "../state/producer"; + } + description + "Reference to producer list key"; + } + + container state { + config false; + description "State container for L2RIB MAC Table Entries"; + uses l2ni-l2rib-common-producer-state; + } + } + } + } + } + uses l2ni-l2rib-common-next-hop-state; + } + } + } + + grouping l2ni-l2rib-mac-table-state { + description "L2RIB MAC Table Operational State Grouping"; + uses l2ni-l2rib-common-state; + } + + grouping l2ni-l2rib-mac-ip-table-state { + description "L2RIB Mac-IP Table Operational State Grouping"; + uses l2ni-l2rib-common-state; + + leaf host-ip { + type inet:ip-address; + description + "Host IP address of the CE device for the L2RIB MAC-IP entry"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf l3-vni { + type oc-evpn-types:evi-id; + description + "Symmetric IRB uses the same forwarding semantics when routing + between IP subnets with VRF Lite or MPLS L3VPNs. With symmetric IRB, + all traffic egressing and returning from a VTEP uses the same VNI. + Specifically, the same Layer 3 VNI (L3VNI) associated with the VRF + is used for all routed traffic. Layer3 VNI used for inter-subnet + routing"; + } + } + + grouping l2ni-l2rib-common-state { + description "L2RIB Common Property Operational State Data Grouping"; + + leaf mac-address { + type yang:mac-address; + description "MAC address of the L2RIB MAC or MAC-IP entry"; + } + leaf vlan { + type leafref { + path "../../../../../../../vlans/vlan/config/vlan-id"; + } + description + "VLAN on which the MAC or MAC-IP address is present."; + } + leaf evi { + type oc-evpn-types:evi-id; + description "EVPN Instance Identifier for the MAC or MAC-IP"; + } + leaf l2-vni { + type oc-evpn-types:evi-id; + description "Layer2 VNI segment mapped to given vlan-id"; + } + } + + grouping l2ni-l2rib-common-producer-state { + description "L2RIB Common Producer Attributes Operational State Data Grouping"; + + leaf producer { + type enumeration { + enum LOCAL { + description "local producer source"; + } + enum STATIC { + description "static producer source"; + } + enum BGP { + description "bgp producer source"; + } + } + description "Source of the learned L2RIB route"; + } + + leaf seq-number { + type uint32; + description + "The sequence number is used to ensure that PEs retain the correct + MAC/IP Advertisement route when multiple updates occur for the same + MAC address"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf mobility-state { + type enumeration { + enum FROZEN { + description + "Permanently frozen mac-address"; + } + enum DUPLICATE { + description + "Duplicate mac-address"; + } + } + description + "Indicates if learned MAC address is duplicate or frozen"; + reference "draft-ietf-bess-evpn-irb-extended-mobility-05"; + } + + leaf esi { + type oc-evpn-types:esi; + description "Ethernet Segment Identifier for local and remote routes"; + } + + leaf sticky { + type boolean; + description "MAC address is sticky and not subjected to MAC moves"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + + leaf next-hop { + type leafref { + path "../../../../../../next-hops/next-hop/index"; + } + description "Leafref next-hop for the MAC-IP table entry"; + } + } + + grouping l2ni-l2rib-common-next-hop-state { + description "L2RIB Common Next Hop Attributes Operational State Data Grouping"; + + container next-hops { + description "A next-hop associated with the MAC or MAC-IP entry"; + list next-hop { + key "index"; + description "List of next hop attributes for each MAC or MAC-IP"; + + leaf index { + type leafref { + path "../state/index"; + } + description + "A unique index identifying the next-hop entry for the + MAC or MAC-IP entry"; + } + container state { + description "State container for common next-hop attributes"; + config false; + leaf index { + type uint64; + description "A unique entry for the next-hop."; + } + leaf peer-ip { + type inet:ip-address; + description "Next hop peer address"; + } + leaf label { + type oc-evpn-types:evi-id; + description "Next hop label representing the l2vni for the route"; + } + uses oc-if:interface-ref-common; + } + } + } + } + grouping l2ni-l2rib-mac-table-producer-state { + description "L2RIB MAC Table Operational State Data Grouping"; + + leaf derived-from-mac-ip { + type boolean; + description "Derived from BGP MAC-IP route-type 2"; + } + + leaf directly-received { + type boolean; + description "BGP learned MAC route-type 2"; + } + } } diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index d7dbd78f4..7a5b007cc 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -47,7 +47,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-04-20" { + description + "Add support for l2rib state data"; + reference "1.1.0"; + } revision "2022-04-19" { description From 207feef8375c30cc22924c0e00d582b9cbcd7386 Mon Sep 17 00:00:00 2001 From: DeeDee Date: Fri, 6 May 2022 12:37:49 -0700 Subject: [PATCH 041/372] Update WiFi models to support 6 GHz operation. (#607) * Update WiFi models to support 6 GHz operation. * (M) release/models/wifi/openconfig-ap-manager.yang - Added deployment types and power sources. * (M) release/models/wifi/openconfig-wifi-mac.yang - Added ssid basic/supported data rates, opmode - Changed server-group requirements for new opmodes - Added mfp support * (M) release/models/wifi/openconfig-wifi-phy.yang - Added new channels and neighbor-list-state opmodes. * (M) release/models/wifi/openconfig-wifi-types - Added new channels, operating frequencies and operating capabilities. * Fix OC versions and substitute - for _. * Substitute - for _ * Additional updates to support 6 GHz on WiFi models. * (M) release/models/wifi/openconfig-wifi-types.yang - Consolidated channels for all frequencies. * (M) release/models/wifi/openconfig-wifi-phy.yang - Removed supported-channels-6ghz due to channel consolidation (above). * (M) release/models/wifi/openconfig-ap-manager.yang - Updated power-sources for 802.3bt with Types 3 and 4. * * (M) release/models/wifi/openconfig-ap-manager.yang - Removed deployment type as implementation of 6 GHz APs in outdoor environments is still pending. * (M) release/models/wifi/openconfig-wifi-mac.yang - Updated leaf descriptions to include 6 GHz where appropriate. - Added WPA3_ENTERPRISE_192_BIT enum under opmode leaf. - Updated server-group and mfp leaves with WPA3_ENTERPRISE_192_BIT opmode option. - Added wpa3-psk leaf. * (M) release/models/wifi/openconfig-wifi-phy.yang - Updated neighbor-list-state opmodes with WPA3. * (M) release/models/wifi/openconfig-wifi-types - Renamed new 6GHz-related identities for consistency. * Addressing comments for adding 6 GHz support. * (M) release/models/wifi/openconfig-wifi-types - Updated description of 6GHz-related frequency types. Co-authored-by: Diana Cortes --- .../models/wifi/openconfig-ap-manager.yang | 14 +++- release/models/wifi/openconfig-wifi-mac.yang | 78 ++++++++++++++++--- release/models/wifi/openconfig-wifi-phy.yang | 28 ++++++- .../models/wifi/openconfig-wifi-types.yang | 36 +++++++-- 4 files changed, 138 insertions(+), 18 deletions(-) diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index ed5303da5..436a20565 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -25,7 +25,13 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2023-03-24" { + description + "Update model to support operation in 6 GHz frequency."; + reference "1.1.0"; + } revision "2021-08-02" { description @@ -166,6 +172,12 @@ module openconfig-ap-manager { enum AF { description "Powered using 802.3af."; } + enum BT_TYPE3 { + description "Powered using 802.3bt Type 3."; + } + enum BT_TYPE4 { + description "Powered using 802.3bt Type 4."; + } enum PLUG { description "Powered using local source, not PoE."; } diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index 236ca46a5..7ad274d74 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,13 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-03-24" { + description + "Update model to support operation in 6 GHz frequency."; + reference "1.1.0"; + } revision "2021-08-02" { description @@ -117,7 +123,7 @@ module openconfig-wifi-mac { default "oc-wifi-types:FREQ_2_5_GHZ"; description "Operating frequency of this SSID. When none specified, the - default is dual-band."; + default is dual-band 2.4 and 5 GHz."; } leaf-list basic-data-rates-2g { @@ -151,6 +157,21 @@ module openconfig-wifi-mac { description "5GHz Supported data-rates for the SSID."; } + leaf-list basic-data-rates-6g { + type identityref { + base oc-wifi-types:DATA_RATE; + } + description + "6GHz Basic data-rates for the SSID."; + } + + leaf-list supported-data-rates-6g { + type identityref { + base oc-wifi-types:DATA_RATE; + } + description + "6GHz Supported data-rates for the SSID."; + } // MCS rates explicitly absent, as they are typically not pruned. leaf broadcast-filter { @@ -208,8 +229,25 @@ module openconfig-wifi-mac { description "WPA2-Enterprise with 802.1X authentication."; } + enum ENHANCED_OPEN { + description + "Open authentication with Opportunistic Wireless Encryption."; + } + enum WPA3_SAE { + description + "WPA3-SAE using Simultaneous Authentication of Equals (SAE)."; + } + enum WPA3_ENTERPRISE { + description + "WPA3-Enterprise with 802.1X SHA-256 authentication key + management."; + } + enum WPA3_ENTERPRISE_192_BIT { + description + "WPA3-Enterprise with 802.1X SHA-384 authentication key + management."; + } } - default "OPEN"; description "The type of Layer2 authentication in use."; } @@ -223,17 +261,30 @@ module openconfig-wifi-mac { } description "The passphrase used on this WPA2-Personal SSID."; - } + } + + leaf wpa3-psk { + when "../opmode = 'WPA3_SAE'"; + type string { + length "8..63"; + } + description + "The passphrase used on this WPA3-SAE SSID."; + } leaf server-group { - when "../opmode = 'WPA2_ENTERPRISE' or ../opmode = - 'WPA2_PERSONAL'"; + when "../opmode = 'WPA2_ENTERPRISE' or + ../opmode = 'WPA2_PERSONAL' or + ../opmode = 'WPA3_ENTERPRISE' or + ../opmode = 'WPA3_ENTERPRISE_192_BIT' or + ../opmode = 'WPA3_SAE'"; type string; description "Specifies the RADIUS server-group to be used, as defined in the openconfig-aaa.yang model. - Including WPA2_PERSONAL as it can be accompained by MAB."; + Including WPA2_PERSONAL and WPA3_SAE as they can be accompanied by + MAB."; } leaf dva { @@ -294,6 +345,16 @@ module openconfig-wifi-mac { description "Enable/disable Opportunistic Key Caching."; } + + leaf mfp { + when "../opmode = 'WPA3_ENTERPRISE' or ../opmode = + 'WPA3_ENTERPRISE_192_BIT' or ../opmode = + 'WPA3_SAE' or ../opmode = 'ENHANCED_OPEN'"; + type boolean; + mandatory true; + description + "Management Frame Protection is required for WPA3 and OWE."; + } } grouping dot11v-config { @@ -1329,8 +1390,7 @@ module openconfig-wifi-mac { leaf frequency { type uint8; description - "Frequency the client is utilizing. Typically, 2.4 or - 5[GHz]."; + "Frequency the client is utilizing. Typically, 2.4, 5 or 6 [GHz]."; } } } diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index fc8d525bc..fac644c77 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-03-24" { + description + "Update model to support operation in 6 GHz frequency."; + reference "1.1.0"; + } revision "2021-08-02" { description @@ -122,7 +128,7 @@ module openconfig-wifi-phy { leaf channel { type uint8 { - range "1..165"; + range "1..233"; } description "Operating channel of this radio. If using channel-bonding @@ -428,6 +434,24 @@ module openconfig-wifi-phy { description "Any flavor of WEP encryption."; } + enum ENHANCED_OPEN { + description + "Open authentication with Opportunistic Wireless Encryption."; + } + enum WPA3_SAE { + description + "WPA3-SAE using Simultaneous Authentication of Equals (SAE)."; + } + enum WPA3_ENTERPRISE { + description + "WPA3-Enterprise with 802.1X SHA-256 authentication key + management."; + } + enum WPA3_ENTERPRISE_192_BIT { + description + "WPA3-Enterprise with 802.1X SHA-384 authentication key + management."; + } } description "Operating mode of the BSS."; diff --git a/release/models/wifi/openconfig-wifi-types.yang b/release/models/wifi/openconfig-wifi-types.yang index 859ed38ae..889b68548 100644 --- a/release/models/wifi/openconfig-wifi-types.yang +++ b/release/models/wifi/openconfig-wifi-types.yang @@ -22,7 +22,13 @@ module openconfig-wifi-types { that are used in the openconfig-wifi modules. It can be imported by any module to make use of these types."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-03-24" { + description + "Update model to support operation in 6 GHz frequency."; + reference "1.1.0"; + } revision "2021-08-02" { description @@ -51,7 +57,7 @@ module openconfig-wifi-types { //typdef statements typedef channels-type { type uint8 { - range "1..14 | 36 | 40 | 44| 48 | 52 | 56 | 60 | 64 | 100 | 104 | 108 | 112 | 116 | 120 | 124 | 128 | 132 | 136 | 140 | 144 | 149 | 153 | 157 | 161 | 165"; + range "1..14 | 17 | 21 | 25 | 29 | 33 | 36 | 37 | 40 | 41 | 44 | 45 | 48 | 49 | 52 | 53 | 56 | 57 | 60 | 61 | 64 | 65 | 69 | 73 | 77 | 81 | 85 | 89 | 93 | 97 | 100 | 101 | 104 | 105 | 108 | 109 | 112 | 113 | 116 | 117 | 120 | 121 | 124 | 125 | 128 | 129 | 132 | 133 | 136 | 137 | 140 | 141 | 144 | 145 | 149 | 153 | 157 | 161 | 165 | 169 | 173 | 177 | 181 | 185 | 189 | 193 | 197 | 201 | 205 | 209 | 213 | 217 | 221 | 225 | 229 | 233"; } description "Type to specify all the WiFi channels available for use. This is @@ -241,11 +247,24 @@ module openconfig-wifi-types { base OPERATING_FREQUENCY; description "The Radio or SSID will be dual-band; operating in - both 2.4 & 5GHz frequencies. + both 2.4 & 5GHz frequencies."; + } + + identity FREQ_6GHZ { + base OPERATING_FREQUENCY; + description "The Radio or SSID will operate at 6GHz only."; + } - Dual-band Radio typically refers to a Monitor-mode radio, hopping - between frequencies, dwelling for a configurable amount of time on - each frequency."; + identity FREQ_5_6_GHZ { + base OPERATING_FREQUENCY; + description "The Radio or SSID will be dual-band; operating in both 5 & + 6GHz frequencies."; + } + + identity FREQ_2_5_6_GHZ { + base OPERATING_FREQUENCY; + description "The Radio or SSID will be tri-band; operating in 2.4, 5 and + 6GHz frequencies."; } identity CLIENT_CAPABILITIES { @@ -284,6 +303,11 @@ module openconfig-wifi-types { are observied in addition to Assoc. Req."; } + identity MFP { + base CLIENT_CAPABILITIES; + description "Whether this STA can use Management Frame Protection."; + } + identity CHANGE_REASON_TYPE { description "Base type to specify the reason an Access Point From 552878841cdbdd88aed13140ccb0488b1290b4bc Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Sat, 7 May 2022 06:02:04 +0100 Subject: [PATCH 042/372] Replacement of BGP decimal64 types (#604) * (M) release/models/bgp/openconfig-bgp.yang * (M) release/models/bgp/openconfig-bgp-common-structure.yang * (M) release/models/bgp/openconfig-bgp-common.yang * (M) release/models/bgp/openconfig-bgp-global.yang * (M) release/models/bgp/openconfig-bgp-neighbor.yang * (M) release/models/bgp/openconfig-bgp-peer-group.yang * (M) release/models/bgp/openconfig-bgp-common-multiprotocol.yang - Deprecate and migrate decimal64 types for various BGP timers --- .../openconfig-bgp-common-multiprotocol.yang | 8 +++++- .../bgp/openconfig-bgp-common-structure.yang | 8 +++++- release/models/bgp/openconfig-bgp-common.yang | 28 ++++++++----------- release/models/bgp/openconfig-bgp-global.yang | 8 +++++- .../models/bgp/openconfig-bgp-neighbor.yang | 12 +++++--- .../models/bgp/openconfig-bgp-peer-group.yang | 8 +++++- release/models/bgp/openconfig-bgp.yang | 8 +++++- 7 files changed, 55 insertions(+), 25 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 1ee2a4999..9e9bfe250 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 092dfcbc2..df60b67b0 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index ac625acd5..72142289c 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description @@ -137,9 +143,7 @@ submodule openconfig-bgp-common { peer"; leaf connect-retry { - type decimal64 { - fraction-digits 2; - } + type uint16; default 30; description "Time interval in seconds between attempts to establish a @@ -147,9 +151,7 @@ submodule openconfig-bgp-common { } leaf hold-time { - type decimal64 { - fraction-digits 2; - } + type uint16; default 90; description "Time interval in seconds that a BGP session will be @@ -161,9 +163,7 @@ submodule openconfig-bgp-common { } leaf keepalive-interval { - type decimal64 { - fraction-digits 2; - } + type uint16; default 30; description "Time interval in seconds between transmission of keepalive @@ -172,9 +172,7 @@ submodule openconfig-bgp-common { } leaf minimum-advertisement-interval { - type decimal64 { - fraction-digits 2; - } + type uint16; default 30; description "Minimum time which must elapse between subsequent UPDATE @@ -482,9 +480,7 @@ submodule openconfig-bgp-common { } leaf stale-routes-time { - type decimal64 { - fraction-digits 2; - } + type uint16; description "An upper-bound on the time thate stale routes will be retained by a router after a session is restarted. If an diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 78bb10269..43ae2cbbb 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 3172f6a41..b81ae7a96 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description @@ -463,9 +469,7 @@ submodule openconfig-bgp-neighbor { with the BGP session"; leaf negotiated-hold-time { - type decimal64 { - fraction-digits 2; - } + type uint16; description "The negotiated hold-time for the BGP session"; } diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index a7dd90215..a2215e3c4 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 4c030bb76..0040d9209 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -60,7 +60,13 @@ module openconfig-bgp { +-> [ optional pointer to peer-group ] +-> AFI / SAFI [ per-AFI overrides ]"; - oc-ext:openconfig-version "8.1.0"; + oc-ext:openconfig-version "9.0.0"; + + revision "2022-04-26" { + description + "Transition decimal64 types to uint16 for various BGP timers"; + reference "9.0.0"; + } revision "2022-03-21" { description From 858cb8652b02154ae0169cd6c53f997eb94faf7f Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 11 May 2022 21:17:36 +0100 Subject: [PATCH 043/372] Fix submodule versioning from commit 3a5269e (#645) --- release/models/rib/openconfig-rib-bgp-attributes.yang | 8 +++++++- .../models/rib/openconfig-rib-bgp-shared-attributes.yang | 8 +++++++- .../models/rib/openconfig-rib-bgp-table-attributes.yang | 8 +++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/release/models/rib/openconfig-rib-bgp-attributes.yang b/release/models/rib/openconfig-rib-bgp-attributes.yang index e0be6cf64..ca916d39f 100644 --- a/release/models/rib/openconfig-rib-bgp-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-attributes.yang @@ -24,7 +24,13 @@ submodule openconfig-rib-bgp-attributes { attributes for use in BGP RIB tables."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2021-06-21" { + description + "Add L2VPN-EVPN BGP RIB Support"; + reference "0.8.0"; + } revision "2019-10-15" { description diff --git a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang index 27df103ff..273eafbd7 100644 --- a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-shared-attributes { "This submodule contains structural data definitions for attribute sets shared across routes."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2021-06-21" { + description + "Add L2VPN-EVPN BGP RIB Support"; + reference "0.8.0"; + } revision "2019-10-15" { description diff --git a/release/models/rib/openconfig-rib-bgp-table-attributes.yang b/release/models/rib/openconfig-rib-bgp-table-attributes.yang index ddd51c169..4dd55a850 100644 --- a/release/models/rib/openconfig-rib-bgp-table-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-table-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-table-attributes { "This submodule contains common data definitions for data related to a RIB entry, or RIB table."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2021-06-21" { + description + "Add L2VPN-EVPN BGP RIB Support"; + reference "0.8.0"; + } revision "2019-10-15" { description From bf737a5567ec248456cb528efcd63cab15e8fc69 Mon Sep 17 00:00:00 2001 From: f zhu Date: Thu, 12 May 2022 17:18:16 -0700 Subject: [PATCH 044/372] Add openconfig model for ip prefix and nexthop counters (#558) * #588 Add openconfig model for ip prefix and nexthop counters --- release/models/aft/openconfig-aft-common.yang | 69 ++++++++++++++++--- .../models/aft/openconfig-aft-ethernet.yang | 8 ++- release/models/aft/openconfig-aft-ipv4.yang | 18 ++++- release/models/aft/openconfig-aft-ipv6.yang | 18 ++++- release/models/aft/openconfig-aft-mpls.yang | 8 ++- release/models/aft/openconfig-aft-pf.yang | 8 ++- release/models/aft/openconfig-aft.yang | 8 ++- 7 files changed, 118 insertions(+), 19 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index d72e57a21..b81c00bd2 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters."; + reference "1.0.0"; + } revision "2022-01-26" { description @@ -149,7 +155,16 @@ submodule openconfig-aft-common { uses aft-common-entry-nexthop-state; uses aft-labeled-entry-state; + + container counters { + description + "Surrounding container for counters."; + + uses aft-common-entry-counter-state; + } + uses aft-evpn-entry-state; + } container ip-in-ip { @@ -174,18 +189,12 @@ submodule openconfig-aft-common { description "Operational state parameters relating to a forwarding entry"; - leaf packets-forwarded { - type oc-yang:counter64; + container counters { + config false; description - "The number of packets which have matched, and been forwarded, - based on the AFT entry."; - } + "Surrounding container for counters."; - leaf octets-forwarded { - type oc-yang:counter64; - description - "The number of octets which have matched, and been forwarded, - based on the AFT entry"; + uses aft-common-entry-counter-state; } // This leafref needs to refer to any network-instance on the system @@ -674,4 +683,42 @@ submodule openconfig-aft-common { uses oc-if:interface-ref-common; } + + grouping aft-common-entry-counter-state { + description + "Counters relating to a forwarding entry"; + + leaf packets-forwarded { + type oc-yang:counter64; + description + "The number of packets which have matched, and been forwarded, + based on the AFT entry."; + } + + leaf octets-forwarded { + type oc-yang:counter64; + description + "The number of octets which have matched, and been forwarded, + based on the AFT entry"; + } + } + + grouping aft-common-backup-entry-counter-state { + description + "Counters relating to a backup forwarding entry"; + + leaf packets-forwarded-backup { + type oc-yang:counter64; + description + "The number of packets which have matched, and been forwarded, + based on the AFT backup entry."; + } + + leaf octets-forwarded-backup { + type oc-yang:counter64; + description + "The number of octets which have matched, and been forwarded, + based on the AFT backup entry"; + } + } } diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index abb9a7530..dd643d78e 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters"; + reference "1.0.0"; + } revision "2022-01-26" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index d249f33fa..cf8dd9d18 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters"; + reference "1.0.0"; + } revision "2022-01-26" { description @@ -144,7 +150,15 @@ submodule openconfig-aft-ipv4 { "The IPv4 destination prefix that should be matched to utilise the AFT entry."; } - uses aft-common-entry-state; + uses aft-common-entry-state { + augment counters { + description + "The number of packets and octets matched the AFT entry + and routed to next-hops within the backup next-hop-group"; + + uses aft-common-backup-entry-counter-state; + } + } uses aft-common-ip-state; } } diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 1d07df253..f72710e1a 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters"; + reference "1.0.0"; + } revision "2022-01-26" { description @@ -144,7 +150,15 @@ submodule openconfig-aft-ipv6 { "The IPv6 destination prefix that should be matched to utilise the AFT entry."; } - uses aft-common-entry-state; + uses aft-common-entry-state { + augment counters { + description + "The number of packets and octets matched the AFT entry + and routed to next-hops within the backup next-hop-group"; + + uses aft-common-backup-entry-counter-state; + } + } uses aft-common-ip-state; } } diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 0e3c57ba3..225150628 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters"; + reference "1.0.0"; + } revision "2022-01-26" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 3b40c85eb..724d97f15 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters"; + reference "1.0.0"; + } revision "2022-01-26" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 9ba09eae7..51f4a5b77 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -40,7 +40,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-01-27" { + description + "Add next hop counters and prefix counters."; + reference "1.0.0"; + } revision "2022-01-26" { description From 46797cd42e82b1c8285e2e544b85d6f15526379b Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Wed, 18 May 2022 16:15:51 -0700 Subject: [PATCH 045/372] Add resource utilization to components (#624) * Add integrated circuit resource utilization to components * (A) release/models/platform/openconfig-platform-common.yang - Add platform-utilization models * (M) release/models/platform/openconfig-platform.yang - Add platform-utilization into chassis and integrated circuit * (M) release/models/platform/openconfig-platform-linecard.yang - Add platform-utilization into linecard --- release/models/platform/.spec.yml | 2 + .../platform/openconfig-platform-common.yang | 147 ++++++++++++++++++ .../openconfig-platform-linecard.yang | 9 +- .../models/platform/openconfig-platform.yang | 13 +- 4 files changed, 169 insertions(+), 2 deletions(-) create mode 100644 release/models/platform/openconfig-platform-common.yang diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index 82922ead0..adf39868d 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -1,6 +1,7 @@ - name: openconfig-platform docs: - yang/platform/openconfig-platform.yang + - yang/platform/openconfig-platform-common.yang - yang/platform/openconfig-platform-types.yang - yang/platform/openconfig-platform-transceiver.yang - yang/platform/openconfig-platform-linecard.yang @@ -14,6 +15,7 @@ - yang/platform/openconfig-platform-integrated-circuit.yang build: - yang/platform/openconfig-platform.yang + - yang/platform/openconfig-platform-common.yang - yang/platform/openconfig-platform-transceiver.yang - yang/platform/openconfig-platform-linecard.yang - yang/platform/openconfig-platform-port.yang diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang new file mode 100644 index 000000000..954c3c7a9 --- /dev/null +++ b/release/models/platform/openconfig-platform-common.yang @@ -0,0 +1,147 @@ +submodule openconfig-platform-common { + + yang-version "1"; + + belongs-to openconfig-platform { + prefix "oc-platform"; + } + + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This modules contains common groupings that are used in multiple + components within the platform module."; + + oc-ext:openconfig-version "0.16.0"; + + revision "2022-04-21" { + description + "Add platform utilization."; + reference "0.16.0"; + } + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping platform-utilization-top { + description + "Top level of utilization."; + + container utilization { + description + "Utilization of the component."; + + container resources { + description + "Enclosing container for the resources in this component."; + + list resource { + key "name"; + description + "List of resources, keyed by resource name."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the resource name."; + } + + container config { + description + "Configuration data for each resource."; + + uses platform-utilization-resource-config; + } + + container state { + config false; + description + "Operational state data for each resource."; + + uses platform-utilization-resource-config; + uses platform-utilization-resource-state; + } + } + } + } + } + + grouping platform-utilization-resource-config { + description + "Configuration data for utilization resource."; + + leaf name { + type string; + description + "Resource name within the component."; + } + } + + grouping platform-utilization-resource-state { + description + "Operational state data for utilization resource."; + + leaf used { + type uint64; + description + "Number of entries currently in use for the resource."; + } + + leaf committed { + type uint64; + description + "Number of entries currently reserved for this resource. This is only + relevant to tables which allocate a block of resource for a given + feature."; + } + + leaf free { + type uint64; + description + "Number of entries available to use."; + } + + leaf max-limit { + type uint64; + description + "Maximum number of entries available for the resource. The value + is the theoretical maximum resource utilization possible."; + } + + leaf high-watermark { + type uint64; + description + "A watermark of highest number of entries used for this resource."; + } + + leaf last-high-watermark { + type oc-types:timeticks64; + description + "The time when the high-watermark was last updated"; + } + } + + // data definition statements + + // augment statements + + // rpc statements + + // notification statements +} diff --git a/release/models/platform/openconfig-platform-linecard.yang b/release/models/platform/openconfig-platform-linecard.yang index 8a4e9b3c8..1932588b9 100644 --- a/release/models/platform/openconfig-platform-linecard.yang +++ b/release/models/platform/openconfig-platform-linecard.yang @@ -23,7 +23,13 @@ module openconfig-platform-linecard { "This module defines data related to LINECARD components in the openconfig-platform model"; - oc-ext:openconfig-version "0.1.2"; + oc-ext:openconfig-version "0.2.0"; + + revision "2022-04-21" { + description + "Add platform utilization to linecard."; + reference "0.2.0"; + } revision "2020-05-10" { description @@ -108,6 +114,7 @@ module openconfig-platform-linecard { uses linecard-config; uses linecard-state; } + uses oc-platform:platform-utilization-top; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 3fe4b59c8..16b34434f 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -13,6 +13,7 @@ module openconfig-platform { import openconfig-yang-types { prefix oc-yang; } import openconfig-types { prefix oc-types; } + include openconfig-platform-common; // meta organization "OpenConfig working group"; @@ -64,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.15.0"; + oc-ext:openconfig-version "0.16.0"; + + revision "2022-04-21" { + description + "Add platform utilization."; + reference "0.16.0"; + } revision "2022-02-02" { description @@ -835,6 +842,8 @@ module openconfig-platform { description "Operational state data for chassis components"; } + + uses platform-utilization-top; } // TODO(aashaikh): linecard container is already defined in @@ -989,6 +998,8 @@ module openconfig-platform { description "Operational state data for chip components"; } + + uses platform-utilization-top; } container backplane { From bb5ba40b380ac9c91fcb19702d16425306fcda30 Mon Sep 17 00:00:00 2001 From: steve ulrich Date: Mon, 23 May 2022 12:23:36 -0500 Subject: [PATCH 046/372] adds extended next-hop encoding config/state for BGP (#513) Adds support for RFC5549 extended next-hop encoding * (M) bgp/openconfig-bgp-common-multiprotocol.yang * restructure mp-ipv4-ipv6-unicast-common groupings to allow for the addition of the extended-next-hop-encoding leaf in the top-level IPv4 unicast config/state containers. --- .../openconfig-bgp-common-multiprotocol.yang | 75 ++++++++++++++----- .../bgp/openconfig-bgp-common-structure.yang | 9 ++- release/models/bgp/openconfig-bgp-common.yang | 8 +- release/models/bgp/openconfig-bgp-global.yang | 8 +- .../models/bgp/openconfig-bgp-neighbor.yang | 8 +- .../models/bgp/openconfig-bgp-peer-group.yang | 8 +- release/models/bgp/openconfig-bgp.yang | 10 ++- 7 files changed, 99 insertions(+), 27 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 9e9bfe250..2c043548e 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description @@ -151,6 +157,20 @@ submodule openconfig-bgp-common-multiprotocol { } } + grouping bgp-common-mp-afi-safi-extended-next-hop-encoding-config { + description + "BGP extended next-hop encoding parameters that apply on a per-AFI-SAFI + basis"; + + leaf extended-next-hop-encoding { + type boolean; + default false; + description + "This leaf indicates whether extended next-hop encoding is enabled for + this AFI-SAFI"; + } + } + grouping bgp-common-mp-afi-safi-config { description "Configuration parameters used for all BGP AFI-SAFIs"; @@ -206,11 +226,7 @@ submodule openconfig-bgp-common-multiprotocol { } description "IPv4 unicast configuration options"; - - // include common IPv[46] unicast options - uses bgp-common-mp-ipv4-ipv6-unicast-common; - - // placeholder for IPv4 unicast specific configuration + uses bgp-common-mp-ipv4-unicast-common; } } @@ -226,12 +242,7 @@ submodule openconfig-bgp-common-multiprotocol { } description "IPv6 unicast configuration options"; - - // include common IPv[46] unicast options - uses bgp-common-mp-ipv4-ipv6-unicast-common; - - // placeholder for IPv6 unicast specific configuration - // options + uses bgp-common-mp-ipv6-unicast-common; } } @@ -449,10 +460,35 @@ submodule openconfig-bgp-common-multiprotocol { } } - grouping bgp-common-mp-ipv4-ipv6-unicast-common { + grouping bgp-common-mp-ipv4-unicast-common { description - "Common configuration that is applicable for IPv4 and IPv6 - unicast"; + "Configuration that is applicable for IPv4 unicast"; + + // include common afi-safi options. + uses bgp-common-mp-all-afi-safi-common; + + container config { + description + "Configuration parameters for IPv4 unicast AFI-SAFI options"; + // configuration options that are common to IPv[46] unicast + uses bgp-common-mp-ipv4-ipv6-unicast-common-config; + + // configuration options that are specific to IPv4 unicast + uses bgp-common-mp-afi-safi-extended-next-hop-encoding-config; + } + + container state { + config false; + description + "State information for IPv4 parameters"; + uses bgp-common-mp-ipv4-ipv6-unicast-common-config; + uses bgp-common-mp-afi-safi-extended-next-hop-encoding-config; + } + } + + grouping bgp-common-mp-ipv6-unicast-common { + description + "Configuration that is applicable for IPv6 unicast"; // include common afi-safi options. uses bgp-common-mp-all-afi-safi-common; @@ -460,15 +496,16 @@ submodule openconfig-bgp-common-multiprotocol { // configuration options that are specific to IPv[46] unicast container config { description - "Configuration parameters for common IPv4 and IPv6 unicast - AFI-SAFI options"; + "Configuration parameters for IPv6 unicast AFI-SAFI options"; + // configuration options that are common to IPv[46] unicast uses bgp-common-mp-ipv4-ipv6-unicast-common-config; + + // placholder for IPv6 unicast specific options } container state { config false; description - "State information for common IPv4 and IPv6 unicast - parameters"; + "State information for IPv6 unicast parameters"; uses bgp-common-mp-ipv4-ipv6-unicast-common-config; } } diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index df60b67b0..80b0afb42 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description @@ -66,7 +72,6 @@ submodule openconfig-bgp-common-structure { reference "6.0.0"; } - revision "2019-05-28" { description "Clarify prefix counter descriptions, add received-pre-policy diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 72142289c..e42a71edf 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 43ae2cbbb..248ece65f 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index b81ae7a96..c67b35d3a 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index a2215e3c4..5101b7812 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 0040d9209..a63a1e808 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -60,7 +60,13 @@ module openconfig-bgp { +-> [ optional pointer to peer-group ] +-> AFI / SAFI [ per-AFI overrides ]"; - oc-ext:openconfig-version "9.0.0"; + oc-ext:openconfig-version "9.1.0"; + + revision "2022-05-21" { + description + "Added extended-next-hop-encoding leaf."; + reference "9.1.0"; + } revision "2022-04-26" { description @@ -185,7 +191,7 @@ module openconfig-bgp { reference "2.0.1"; } - // OpenConfig specific extensions for module metadata. + // OpenConfig specific extensions for module metadata. oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; From 70607a3d7ea5ae73d7048fa14ceb9359f42d2596 Mon Sep 17 00:00:00 2001 From: m26singhvi Date: Tue, 24 May 2022 00:25:17 +0530 Subject: [PATCH 047/372] Update oc-macsec model to use oc-keychain model #606 (#614) Remove key-chain container from macsec openconfig model completely and use global key-chain model instead. --- release/models/macsec/openconfig-macsec.yang | 66 +++----------------- 1 file changed, 10 insertions(+), 56 deletions(-) diff --git a/release/models/macsec/openconfig-macsec.yang b/release/models/macsec/openconfig-macsec.yang index 039565bfa..27f6f2d2d 100644 --- a/release/models/macsec/openconfig-macsec.yang +++ b/release/models/macsec/openconfig-macsec.yang @@ -7,6 +7,7 @@ module openconfig-macsec { import openconfig-interfaces { prefix oc-if; } import openconfig-macsec-types { prefix macsec-types; } import openconfig-yang-types { prefix oc-yang; } + import openconfig-keychain { prefix "oc-keychain"; } organization "OpenConfig working group"; @@ -17,11 +18,17 @@ module openconfig-macsec { "This module defines configuration and state data for MACsec IEEE Std 802.1AE-2018."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "1.0.0"; oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2022-04-28" { + description + "Use global key chain model."; + reference "1.0.0"; + } + revision "2020-05-01" { description "Move identifiers for scsa-[tr]x out of @@ -136,59 +143,6 @@ module openconfig-macsec { } } - grouping macsec-mka-key-chain-config { - description - "MKA Key chain config grouping"; - - leaf name { - type string; - description - "MKA Key-chain name"; - } - } - - grouping macsec-mka-key-chain-top { - description - "MKA key chain top level grouping"; - - container key-chains { - description - "Enclosing container for the MKA key chains"; - - list key-chain { - key "name"; - - description - "MKA Key chain name"; - - leaf name { - type leafref { - path "../config/name"; - } - description - "Reference to the MKA Key chain name"; - } - - container config { - description - "Configuration of the MKA key chain"; - - uses macsec-mka-key-chain-config; - } - - container state { - config false; - description - "Operational state data for MKA key chain"; - - uses macsec-mka-key-chain-config; - } - - uses macsec-mka-key-top; - } - } - } - grouping macsec-mka-interface-config { description "MKA interface config grouping"; @@ -203,7 +157,8 @@ module openconfig-macsec { leaf key-chain { type leafref { - path "/macsec/mka/key-chains/key-chain/name"; + path "/oc-keychain:keychains/oc-keychain:keychain/" + + "oc-keychain:name"; } description "Configure Key Chain name"; @@ -812,7 +767,6 @@ module openconfig-macsec { "The MKA"; uses macsec-mka-policy-top; - uses macsec-mka-key-chain-top; uses macsec-mka-global-top; } } From 179880ce3977cb167637ab753598ec9724a8a0a0 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 24 May 2022 15:37:30 -0600 Subject: [PATCH 048/372] Updates to route preference/metrics (#617) * Updates to route preference/metrics * (M) release/models/isis/openconfig-isis-lsp.yang * (M) release/models/isis/openconfig-isis-routing.yang * (M) release/models/isis/openconfig-isis.yang - Change internal/external route preference to unrestricted uint32 * (M) release/models/local-routing/openconfig-local-routing.yang - Remove of top-level /local-routes as it has been re-rooted under network-instance protocols for a number of major releases - Description update to static route metric - Addition of static route preference (administrative distance) - Addition of aggregate route preference/metric --- release/models/isis/openconfig-isis-lsp.yang | 9 +- .../models/isis/openconfig-isis-routing.yang | 9 +- release/models/isis/openconfig-isis.yang | 21 ++-- .../openconfig-local-routing.yang | 109 ++++++++---------- 4 files changed, 74 insertions(+), 74 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index ad31fed9e..c73ee12d1 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-05-10" { + description + "Modify internal/external route preference to unrestricted uint32 + type."; + reference "1.0.0"; + } revision "2022-03-01" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index d3f02f9aa..1ba999873 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-05-10" { + description + "Modify internal/external route preference to unrestricted uint32 + type."; + reference "1.0.0"; + } revision "2022-03-01" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index d7c18eb25..18da87fea 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-05-10" { + description + "Modify internal/external route preference to unrestricted uint32 + type."; + reference "1.0.0"; + } revision "2022-03-01" { description @@ -1104,19 +1111,15 @@ module openconfig-isis { "This grouping defines ISIS route preference configuration"; leaf external-route-preference { - type uint8 { - range "1..max"; - } + type uint32; description - "Administrative Distance(preference) for external ISIS routes."; + "Administrative Distance (preference) for external ISIS routes."; } leaf internal-route-preference { - type uint8 { - range "1..max"; - } + type uint32; description - "Administrative Distance(preference) for internal ISIS routes."; + "Administrative Distance (preference) for internal ISIS routes."; } } diff --git a/release/models/local-routing/openconfig-local-routing.yang b/release/models/local-routing/openconfig-local-routing.yang index 37a653881..f3371b529 100644 --- a/release/models/local-routing/openconfig-local-routing.yang +++ b/release/models/local-routing/openconfig-local-routing.yang @@ -43,7 +43,15 @@ module openconfig-local-routing { protocol-specific policy after importing the route into the protocol for distribution (again via routing policy)."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-10" { + description + "Removal of top-level /local-routes, description update to + static route metric, addition of static/aggregate route + preference, addition of aggregate route metric."; + reference "2.0.0"; + } revision "2020-03-24" { description @@ -119,7 +127,7 @@ module openconfig-local-routing { grouping local-generic-settings { description - "Generic options that can be set on local routes When + "Generic options that can be set on local routes when they are defined"; leaf set-tag { @@ -137,6 +145,39 @@ module openconfig-local-routing { } } + grouping local-common-route-attributes { + description + "Common route attributes that can be set on static route next-hops + as well as aggregate routes."; + + leaf metric { + type uint32; + description + "A metric (or cost) which is utilized to specify the order of + selection of the next-hop entry. The lower the metric, the more + preferable the prefix entry is. When this value is not + specified, the metric is inherited from the default metric of + the implementation for static route entries. When multiple + next-hops are specified for a static route, the metric is + utilized to determine which of the next-hops to be installed in + the RIB. When multiple next-hops have the same metric (be it + specified, or simply the default) then these next-hops should + all be installed in the RIB."; + } + + leaf preference { + type uint32; + description + "Administrative Distance (preference) of the entry. The + preference defines the order of selection when multiple + sources (protocols, static, etc.) contribute to the same + prefix entry. The lower the preference, the more preferable the + prefix is. When this value is not specified, the preference is + inherited from the default preference of the implementation for + static routes."; + } + } + grouping local-static-config { description "Configuration data for static routes."; @@ -186,23 +227,6 @@ module openconfig-local-routing { interface."; } - leaf metric { - type uint32; - description - "A metric which is utilised to specify the preference of - the next-hop entry when it is injected into the RIB. The - lower the metric, the more preferable the prefix is. When - this value is not specified the metric is inherited from - the default metric utilised for static routes within the - network instance that the static routes are being - instantiated. When multiple next-hops are specified for a - static route, the metric is utilised to determine which of - the next-hops is to be installed in the RIB. When multiple - next-hops have the same metric (be it specified, or simply - the default) then these next-hops should all be installed - in the RIB"; - } - leaf recurse { type boolean; default false; @@ -217,6 +241,8 @@ module openconfig-local-routing { restricted to being via the interface specified - and recursion is hence disabled."; } + + uses local-common-route-attributes; } grouping local-static-nexthop-state { @@ -339,7 +365,7 @@ module openconfig-local-routing { } uses local-generic-settings; - + uses local-common-route-attributes; } grouping local-aggregate-state { @@ -392,47 +418,4 @@ module openconfig-local-routing { } } - grouping local-routes-config { - description - "Configuration data for locally defined routes"; - } - - grouping local-routes-state { - description - "Operational state data for locally defined routes"; - } - - grouping local-routes-top { - description - "Top-level grouping for local routes"; - - container local-routes { - description - "Top-level container for local routes"; - - container config { - description - "Configuration data for locally defined routes"; - - uses local-routes-config; - } - - container state { - - config false; - - description - "Operational state data for locally defined routes"; - - uses local-routes-config; - uses local-routes-state; - } - - uses local-static-top; - uses local-aggregate-top; - } - } - - uses local-routes-top; - } From b34db05e8cf2efe69df3762d4bbd80665e1f9e79 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 25 May 2022 11:17:14 -0600 Subject: [PATCH 049/372] Update remainder of regex pattern statements for XSD conformance (#534) * Update remainder of regex pattern statements for XSD conformance * (M) release/models/bgp/openconfig-bgp-policy.yang * (M) release/models/openflow/openconfig-openflow-types.yang * (M) release/models/policy/openconfig-routing-policy.yang * (M) release/models/vlan/openconfig-vlan-types.yang * (M) release/models/wifi/openconfig-ap-manager.yang - Remove anchors in pattern statements to make them W3C compliant - Remove regex-posix extension from these updated modules * Add regex tests for converted string patterns * (A) regexp-tests/openconfig-bgp-policy-test.yang * (A) regexp-tests/openconfig-openflow-types-test.yang * (A) regexp-tests/openconfig-openflow-vlan-types-test.yang --- .../openconfig-openflow-types-test.yang | 18 +++++++++ regexp-tests/openconfig-vlan-types-test.yang | 38 +++++++++++++++++++ release/models/bgp/openconfig-bgp-policy.yang | 15 ++++++-- .../openflow/openconfig-openflow-types.yang | 15 ++++++-- .../policy/openconfig-routing-policy.yang | 15 ++++++-- .../models/vlan/openconfig-vlan-types.yang | 31 ++++++++++----- .../models/wifi/openconfig-ap-manager.yang | 17 +++++++-- 7 files changed, 127 insertions(+), 22 deletions(-) create mode 100644 regexp-tests/openconfig-openflow-types-test.yang create mode 100644 regexp-tests/openconfig-vlan-types-test.yang diff --git a/regexp-tests/openconfig-openflow-types-test.yang b/regexp-tests/openconfig-openflow-types-test.yang new file mode 100644 index 000000000..fbb7c4ed2 --- /dev/null +++ b/regexp-tests/openconfig-openflow-types-test.yang @@ -0,0 +1,18 @@ +module openconfig-openflow-types-test { + prefix "openflow-types-t"; + namespace "urn:openconfig-openflow-types-test"; + + import pattern-test { prefix "pt"; } + import openconfig-openflow-types { prefix "openflow-types"; } + + leaf datapath-id { + type openflow-types:datapath-id; + // Upper 16-bits (UD), Lower 48-bits (MAC) + pt:pattern-test-pass "00:0a:00:9c:02:d8:18:00"; + pt:pattern-test-pass "00:ff:0a:3c:67:c8:12:01"; + pt:pattern-test-pass "00:FF:0A:3C:67:C8:12:01"; + pt:pattern-test-pass "11:11:11:11:11:11:11:11"; + pt:pattern-test-fail "0:a:0:9:0:d:1:0"; + pt:pattern-test-fail "0h:0a:00:9c:02:d8:18:00"; + } +} diff --git a/regexp-tests/openconfig-vlan-types-test.yang b/regexp-tests/openconfig-vlan-types-test.yang new file mode 100644 index 000000000..3247c4e2f --- /dev/null +++ b/regexp-tests/openconfig-vlan-types-test.yang @@ -0,0 +1,38 @@ +module openconfig-vlan-types-test { + prefix "oc-vlan-types-t"; + namespace "urn:openconfig-vlan-types-test"; + + import pattern-test { prefix "pt"; } + import openconfig-vlan-types { prefix "oc-vlan-types"; } + + leaf vlan-range { + type oc-vlan-types:vlan-range; + pt:pattern-test-pass "1..10"; + pt:pattern-test-pass "30..32"; + pt:pattern-test-pass "1024..2048"; + pt:pattern-test-fail "100..4097"; + pt:pattern-test-fail "14"; + pt:pattern-test-fail "A..40"; + } + + leaf qinq-id { + type oc-vlan-types:qinq-id; + pt:pattern-test-pass "10.10"; + pt:pattern-test-pass "23.2000"; + pt:pattern-test-pass "1000.*"; + pt:pattern-test-fail "525"; + pt:pattern-test-fail "100.4097"; + pt:pattern-test-fail "300.4A"; + } + + leaf qinq-id-range { + type oc-vlan-types:qinq-id-range; + pt:pattern-test-pass "1.10..100"; + pt:pattern-test-pass "100.400..1000"; + pt:pattern-test-pass "300..400.1000"; + pt:pattern-test-pass "1024..2048.1024"; + pt:pattern-test-fail "1024..2048..1024"; + pt:pattern-test-fail "10.20.30"; + pt:pattern-test-fail "1020..1030"; + } +} diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index 639a8ef50..c864959b0 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,17 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.0.2"; + oc-ext:openconfig-version "6.1.0"; + + revision "2022-05-24" { + description + "Remove module extension oc-ext:regexp-posix by making pattern regexes + conform to RFC6020/RFC7950. + + Types impacted: + - bgp-set-med-type"; + reference "6.1.0"; + } revision "2020-06-30" { description @@ -101,7 +111,6 @@ module openconfig-bgp-policy { } // OpenConfig specific extensions for module metadata. - oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; @@ -150,7 +159,7 @@ module openconfig-bgp-policy { type union { type uint32; type string { - pattern '^[+-][0-9]+$'; + pattern '[+-][0-9]+'; oc-ext:posix-pattern '^[+-][0-9]+$'; } type enumeration { diff --git a/release/models/openflow/openconfig-openflow-types.yang b/release/models/openflow/openconfig-openflow-types.yang index 4db4675ba..b61e542c5 100644 --- a/release/models/openflow/openconfig-openflow-types.yang +++ b/release/models/openflow/openconfig-openflow-types.yang @@ -18,7 +18,17 @@ module openconfig-openflow-types { "This module defines types related to the Openflow configuration and operational state model."; - oc-ext:openconfig-version "0.1.3"; + oc-ext:openconfig-version "0.2.0"; + + revision "2022-05-24" { + description + "Remove module extension oc-ext:regexp-posix by making pattern regexes + conform to RFC6020/7950. + + Types impacted: + - datapath-id"; + reference "0.2.0"; + } revision "2020-06-30" { description @@ -45,7 +55,6 @@ module openconfig-openflow-types { } // OpenConfig specific extensions for module metadata. - oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; @@ -97,7 +106,7 @@ module openconfig-openflow-types { typedef datapath-id { type string { - pattern '^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}$'; + pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}'; oc-ext:posix-pattern '^[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){7}$'; } description diff --git a/release/models/policy/openconfig-routing-policy.yang b/release/models/policy/openconfig-routing-policy.yang index 0ed2f9392..bf419b779 100644 --- a/release/models/policy/openconfig-routing-policy.yang +++ b/release/models/policy/openconfig-routing-policy.yang @@ -77,7 +77,17 @@ module openconfig-routing-policy { the remaining conditions (using a modified route if the subroutine performed any changes to the route)."; - oc-ext:openconfig-version "3.2.2"; + oc-ext:openconfig-version "3.3.0"; + + revision "2022-05-24" { + description + "Remove module extension oc-ext:regexp-posix by making pattern regexes + conform to RFC6020/7950. + + Types impacted: + - masklength-range"; + reference "3.3.0"; + } revision "2020-08-18" { description @@ -126,7 +136,6 @@ module openconfig-routing-policy { } // OpenConfig specific extensions for module metadata. - oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; @@ -273,7 +282,7 @@ module openconfig-routing-policy { leaf masklength-range { type string { - pattern '^(([0-9]+\.\.[0-9]+)|exact)$'; + pattern '(([0-9]+\.\.[0-9]+)|exact)'; oc-ext:posix-pattern '^(([0-9]+\.\.[0-9]+)|exact)$'; } description diff --git a/release/models/vlan/openconfig-vlan-types.yang b/release/models/vlan/openconfig-vlan-types.yang index 2cb04c12a..09af39887 100644 --- a/release/models/vlan/openconfig-vlan-types.yang +++ b/release/models/vlan/openconfig-vlan-types.yang @@ -21,7 +21,19 @@ module openconfig-vlan-types { "This module defines configuration and state variables for VLANs, in addition to VLAN parameters associated with interfaces"; - oc-ext:openconfig-version "3.1.1"; + oc-ext:openconfig-version "3.2.0"; + + revision "2022-05-24" { + description + "Remove module extension oc-ext:regexp-posix by making pattern regexes + conform to RFC6020/7950. + + Types impacted: + - vlan-range + - qinq-id + - qinq-id-range"; + reference "3.2.0"; + } revision "2020-06-30" { description @@ -63,7 +75,6 @@ module openconfig-vlan-types { } // OpenConfig specific extensions for module metadata. - oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; @@ -128,10 +139,10 @@ module openconfig-vlan-types { typedef vlan-range { type string { // range specified as [lower]..[upper] - pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + pattern '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' + '40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' + - '[1-9])$'; + '[1-9])'; oc-ext:posix-pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' + '40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' + @@ -148,10 +159,10 @@ module openconfig-vlan-types { typedef qinq-id { type string { pattern - '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.' + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + - '[1-9][0-9]{1,2}|[1-9])|\*)$'; + '[1-9][0-9]{1,2}|[1-9])|\*)'; oc-ext:posix-pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.' + @@ -174,12 +185,12 @@ module openconfig-vlan-types { type string { // match cases where the range is specified as x..y.z pattern - '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.\.' + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.' + '((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + - '[1-9][0-9]{1,2}|[1-9])|\*)$'; + '[1-9][0-9]{1,2}|[1-9])|\*)'; oc-ext:posix-pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.\.' + @@ -191,12 +202,12 @@ module openconfig-vlan-types { type string { // match cases where the range is specified as x.y..z pattern - '^(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + + '(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9]))\.' + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9])\.\.' + '(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + - '[1-9][0-9]{1,2}|[1-9])$'; + '[1-9][0-9]{1,2}|[1-9])'; oc-ext:posix-pattern '^(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' + '[1-9][0-9]{1,2}|[1-9]))\.' + diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index 436a20565..8f99920fa 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -25,9 +25,20 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; - revision "2023-03-24" { + revision "2022-05-24" { + description + "Change pattern regexes to conform to RFC6020/7950. + + Leaf nodes impacted: + - country-code + + Fix previous incorrect revision date"; + reference "1.2.0"; + } + + revision "2022-03-24" { description "Update model to support operation in 6 GHz frequency."; reference "1.1.0"; @@ -85,7 +96,7 @@ module openconfig-ap-manager { leaf country-code { type string { - pattern '^[A-Z]{2}$'; + pattern '[A-Z]{2}'; oc-ext:posix-pattern '^[A-Z]{2}$'; } description From fca8ed94d57452064744f9a7352c24476febfbb2 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 7 Jun 2022 15:21:09 -0600 Subject: [PATCH 050/372] Revert IETF type module usage in BGP RIB modules (#650) * (M) release/models/rib/openconfig-rib-bgp-attributes.yang * (M) release/models/rib/openconfig-rib-bgp-shared-attributes.yang * (M) release/models/rib/openconfig-rib-bgp-table-attributes.yang * (M) release/models/rib/openconfig-rib-bgp-tables.yang * (M) release/models/rib/openconfig-rib-bgp.yang - Revert IETF types in favor of oc-types --- .../models/rib/openconfig-rib-bgp-attributes.yang | 8 +++++++- .../rib/openconfig-rib-bgp-shared-attributes.yang | 8 +++++++- .../rib/openconfig-rib-bgp-table-attributes.yang | 8 +++++++- release/models/rib/openconfig-rib-bgp-tables.yang | 12 +++++++++--- release/models/rib/openconfig-rib-bgp.yang | 8 +++++++- 5 files changed, 37 insertions(+), 7 deletions(-) diff --git a/release/models/rib/openconfig-rib-bgp-attributes.yang b/release/models/rib/openconfig-rib-bgp-attributes.yang index ca916d39f..f9577a5c4 100644 --- a/release/models/rib/openconfig-rib-bgp-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-attributes.yang @@ -24,7 +24,13 @@ submodule openconfig-rib-bgp-attributes { attributes for use in BGP RIB tables."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.8.1"; + + revision "2022-06-06" { + description + "Revert IETF types in favor of oc-inet types"; + reference "0.8.1"; + } revision "2021-06-21" { description diff --git a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang index 273eafbd7..59508fe7b 100644 --- a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-shared-attributes { "This submodule contains structural data definitions for attribute sets shared across routes."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.8.1"; + + revision "2022-06-06" { + description + "Revert IETF types in favor of oc-inet types"; + reference "0.8.1"; + } revision "2021-06-21" { description diff --git a/release/models/rib/openconfig-rib-bgp-table-attributes.yang b/release/models/rib/openconfig-rib-bgp-table-attributes.yang index 4dd55a850..1c373c40f 100644 --- a/release/models/rib/openconfig-rib-bgp-table-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-table-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-table-attributes { "This submodule contains common data definitions for data related to a RIB entry, or RIB table."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.8.1"; + + revision "2022-06-06" { + description + "Revert IETF types in favor of oc-inet types"; + reference "0.8.1"; + } revision "2021-06-21" { description diff --git a/release/models/rib/openconfig-rib-bgp-tables.yang b/release/models/rib/openconfig-rib-bgp-tables.yang index 55207176a..04f3f0bbf 100644 --- a/release/models/rib/openconfig-rib-bgp-tables.yang +++ b/release/models/rib/openconfig-rib-bgp-tables.yang @@ -7,9 +7,9 @@ submodule openconfig-rib-bgp-tables { // import some basic types import openconfig-inet-types { prefix oc-inet; } + import openconfig-yang-types { prefix oc-yang; } import openconfig-extensions { prefix oc-ext; } import openconfig-policy-types { prefix oc-pol-types; } - import ietf-yang-types { prefix yang; } import openconfig-network-instance-types { prefix oc-ni-types; } import openconfig-evpn-types { prefix oc-evpn-types; } @@ -30,7 +30,13 @@ submodule openconfig-rib-bgp-tables { "This submodule contains structural data definitions for BGP routing tables."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.8.1"; + + revision "2022-06-06" { + description + "Revert IETF types in favor of oc-inet types"; + reference "0.8.1"; + } revision "2021-06-21" { description @@ -778,7 +784,7 @@ submodule openconfig-rib-bgp-tables { } leaf mac-address { - type yang:mac-address; + type oc-yang:mac-address; description "The MAC address that is learned on a PE from a CE that is connected to it or learned from other PEs"; diff --git a/release/models/rib/openconfig-rib-bgp.yang b/release/models/rib/openconfig-rib-bgp.yang index ff8784a69..d2d5f2735 100644 --- a/release/models/rib/openconfig-rib-bgp.yang +++ b/release/models/rib/openconfig-rib-bgp.yang @@ -67,7 +67,13 @@ module openconfig-rib-bgp { eligible for sending (advertising) to the neighbor after output policy rules have been applied."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.8.1"; + + revision "2022-06-06" { + description + "Revert IETF types in favor of oc-inet types"; + reference "0.8.1"; + } revision "2021-06-21" { description From 7fc96f3de4069279b97f8b645ba374940c41dddd Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 7 Jun 2022 15:35:25 -0600 Subject: [PATCH 051/372] Prefix qualification for AFT network-instance absolute paths (#611) * (M) release/models/aft/openconfig-aft-common.yang * (M) release/models/aft/openconfig-aft-ethernet.yang * (M) release/models/aft/openconfig-aft-ipv4.yang * (M) release/models/aft/openconfig-aft-ipv6.yang * (M) release/models/aft/openconfig-aft-mpls.yang * (M) release/models/aft/openconfig-aft-pf.yang * (M) release/models/aft/openconfig-aft.yang * (M) release/models/aft/openconfig-aft-network-instance.yang - Relocate network-instance specific next-hop-group leafs to the AFT network-instance model - Fix prefixing for network-instance specific leafrefs --- release/models/aft/openconfig-aft-common.yang | 37 ++---- .../models/aft/openconfig-aft-ethernet.yang | 10 +- release/models/aft/openconfig-aft-ipv4.yang | 10 +- release/models/aft/openconfig-aft-ipv6.yang | 10 +- release/models/aft/openconfig-aft-mpls.yang | 10 +- .../aft/openconfig-aft-network-instance.yang | 121 ++++++++++++++---- release/models/aft/openconfig-aft-pf.yang | 10 +- release/models/aft/openconfig-aft.yang | 10 +- 8 files changed, 157 insertions(+), 61 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index b81c00bd2..989241874 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,15 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description @@ -197,33 +205,6 @@ submodule openconfig-aft-common { uses aft-common-entry-counter-state; } - // This leafref needs to refer to any network-instance on the system - // hence must be absolute. This change means that this module cannot - // be used outside of the network instance model without changes being - // made to it. - leaf next-hop-group { - type leafref { - path "/network-instances/network-instance/afts/" + - "next-hop-groups/next-hop-group/state/id"; - } - description - "A reference to the next-hop-group that is in use for the entry - within the AFT. Traffic is distributed across the set of next-hops - within the next-hop group according to the weight."; - } - - leaf next-hop-group-network-instance { - type leafref { - path "/network-instances/network-instance/config/name"; - } - description - "The network instance to look up the next-hop-group in. If - unspecified, the next hop group is in the local network - instance. The referenced network-instance must be an existing - network instance on the device and have corresponding entries - in the /network-instances/network-instance list."; - } - leaf entry-metadata { type binary { length "0..8"; // 0 to 8 bytes diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index dd643d78e..b12d08540 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,15 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index cf8dd9d18..45d80d28a 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,15 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index f72710e1a..513faee29 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,15 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 225150628..be1f264f0 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,15 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description diff --git a/release/models/aft/openconfig-aft-network-instance.yang b/release/models/aft/openconfig-aft-network-instance.yang index 2d577ec18..17428ceea 100644 --- a/release/models/aft/openconfig-aft-network-instance.yang +++ b/release/models/aft/openconfig-aft-network-instance.yang @@ -19,7 +19,15 @@ module openconfig-aft-network-instance { when building the OpenConfig network instance model to add per-NI AFTs."; - oc-ext:openconfig-version "0.2.3"; + oc-ext:openconfig-version "0.3.0"; + + revision "2022-03-29" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "0.3.0"; + } revision "2018-11-21" { description @@ -44,17 +52,6 @@ module openconfig-aft-network-instance { oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; - augment "/oc-ni:network-instances/oc-ni:network-instance/" + - "oc-ni:afts/oc-ni:next-hops/oc-ni:next-hop/oc-ni:state" { - - description - "Add leaves that require referencing of a network instance to the - operational state parameters of a next-hop within the AFT for IPv4 - unicast."; - - uses aft-nexthop-ni-state; - } - grouping aft-nexthop-ni-state { description "Operational state parameters relating to a next-hop which reference a @@ -69,12 +66,72 @@ module openconfig-aft-network-instance { } } + grouping aft-entry-ni-state { + description + "Operational state parameters relating to an AFT entry which reference + a network instance."; + + leaf origin-network-instance { + type oc-ni:network-instance-ref; + description + "If the AFT entry was imported from another network instance (e.g., it + corresponds to a L3 forwarding entry which was learned within another + network-instance), the value of this leaf reflects the network-instance + from which it was learned. + + For example, if the local network-instance corresponds to a L3VRF, and + routes are imported from the VPNv4 address-family of the BGP instance + in the DEFAULT_INSTANCE, then this value would reflect the + DEFAULT_INSTANCE as the origin-network-instance."; + } + } + + grouping aft-entry-nexthop-group-state { + description + "Operational state nexthop group parameters relating to an AFT entry + which reference a network instance."; + + leaf next-hop-group { + type leafref { + path "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/" + + "oc-ni:next-hop-groups/oc-ni:next-hop-group/oc-ni:state/oc-ni:id"; + } + description + "A reference to the next-hop-group that is in use for the entry within + the AFT. Traffic is distributed across the set of next-hops within the + next-hop group according to the weight. This node needs to refer to any + network-instance on the system hence must be absolute."; + } + + leaf next-hop-group-network-instance { + type oc-ni:network-instance-ref; + description + "The network instance to look up the next-hop-group in. If unspecified, + the next hop group is in the local network instance. The referenced + network-instance must be an existing network instance on the device and + have corresponding entries in the /network-instances/network-instance + list."; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:next-hops/oc-ni:next-hop/oc-ni:state" { + + description + "Add leaves that require referencing of a network instance to the + operational state parameters of a next-hop within the AFT for IPv4 + unicast."; + + uses aft-nexthop-ni-state; + } + augment "/oc-ni:network-instances/oc-ni:network-instance/" + "oc-ni:afts/oc-ni:ipv4-unicast/oc-ni:ipv4-entry/oc-ni:state" { description "Add leaves that require referencing of a network instance to the operational state parameters of an entry within the IPv4 unicast AFT."; + uses aft-entry-nexthop-group-state; uses aft-entry-ni-state; } @@ -84,26 +141,36 @@ module openconfig-aft-network-instance { "Add leaves that require referencing of a network instance to the operational state parameters of an entry within the IPv6 unicast AFT."; + uses aft-entry-nexthop-group-state; uses aft-entry-ni-state; } - grouping aft-entry-ni-state { + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:policy-forwarding/oc-ni:policy-forwarding-entry/" + + "oc-ni:state" { description - "Operational state parameters relating to an AFT entry which reference - a network instance."; + "Add leaves that require referencing of a network instance to the + operational state parameters of an entry within the Policy Forwarding + AFT."; - leaf origin-network-instance { - type oc-ni:network-instance-ref; - description - "If the AFT entry was imported from another network instance (e.g., it - corresponds to a L3 forwarding entry which was learned within another - network-instance), the value of this leaf reflects the network-instance - from which it was learned. + uses aft-entry-nexthop-group-state; + } - For example, if the local network-instance corresponds to a L3VRF, and - routes are imported from the VPNv4 address-family of the BGP instance - in the DEFAULT_INSTANCE, then this value would reflect the - DEFAULT_INSTANCE as the origin-network-instance."; - } + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:mpls/oc-ni:label-entry/oc-ni:state" { + description + "Add leaves that require referencing of a network instance to the + operational state parameters of an entry within the MPLS AFT."; + + uses aft-entry-nexthop-group-state; + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/" + + "oc-ni:afts/oc-ni:ethernet/oc-ni:mac-entry/oc-ni:state" { + description + "Add leaves that require referencing of a network instance to the + operational state parameters of an entry within the Ethernet AFT."; + + uses aft-entry-nexthop-group-state; } } diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 724d97f15..910b454c6 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,15 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 51f4a5b77..22e14f369 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -40,7 +40,15 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-05-17" { + description + "Relocate next-hop-group/next-hop-group-network-instance + from openconfig-aft-common to resolve absolute path + leafref specific to network-instances"; + reference "2.0.0"; + } revision "2022-01-27" { description From 1c3b505ad4f0ebc5bee76263bb4a6a30d77ff4dd Mon Sep 17 00:00:00 2001 From: steve ulrich Date: Mon, 13 Jun 2022 11:55:22 -0500 Subject: [PATCH 052/372] Add units and clarifying text for last-reboot- and last-switchover-time. (#655) * (M) release/models/platform/openconfig-platform.yang * (M) release/models/platform/openconfig-platform-common.yang - Clarify `last-reboot-time` and `last-switchover-time` are in nanoseconds since the unix epoch. --- .../platform/openconfig-platform-common.yang | 8 +++++++- .../models/platform/openconfig-platform.yang | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 954c3c7a9..5ec510db8 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -19,7 +19,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.16.0"; + oc-ext:openconfig-version "0.17.0"; + + revision "2022-06-10" { + description + "Specify units and epoch for switchover and reboot times."; + reference "0.17.0"; + } revision "2022-04-21" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 16b34434f..8ff6831ea 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.16.0"; + oc-ext:openconfig-version "0.17.0"; + + revision "2022-06-10" { + description + "Specify units and epoch for switchover and reboot times."; + reference "0.17.0"; + } revision "2022-04-21" { description @@ -472,11 +478,14 @@ module openconfig-platform { leaf last-switchover-time { type oc-types:timeticks64; + units "nanoseconds"; description "For components that have redundant roles (e.g. two supervisors in a device, one as primary the other as secondary), this reports the time of the last change of - the component's role."; + the component's role. The value is the timestamp in + nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + } leaf last-reboot-reason { @@ -489,8 +498,11 @@ module openconfig-platform { leaf last-reboot-time { type oc-types:timeticks64; + units "nanoseconds"; description - "This reports the time of the last reboot of the component."; + "This reports the time of the last reboot of the component. The + value is the timestamp in nanoseconds relative to the Unix Epoch + (Jan 1, 1970 00:00:00 UTC)."; } } From cb772c5ff4056b72cb030dcef3a315cbbe801673 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 15 Jun 2022 08:33:43 -0600 Subject: [PATCH 053/372] Updates to ACL model (#556) * (M) release/models/acl/openconfig-acl.yang - Fix when statements for L2/L3/L4 attributes when ACL type is ACL_MIXED --- release/models/acl/openconfig-acl.yang | 34 +++++++++++++++++--------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 224724671..5a6715965 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,7 +34,13 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.2.1"; + oc-ext:openconfig-version "1.2.2"; + + revision "2022-01-14" { + description + "Fix when statements for MIXED mode ACLs"; + reference "1.2.2"; + } revision "2021-06-16" { description @@ -416,42 +422,48 @@ module openconfig-acl { } uses oc-match:ethernet-header-top { - when "../../config/type='ACL_L2'" { + when "../../config/type='ACL_L2' or " + + "../../config/type='ACL_MIXED'" { description - "MAC-layer fields are valid when the ACL type is L2"; + "MAC-layer fields are valid when the ACL type is L2 or + MIXED"; } } uses oc-match:ipv4-protocol-fields-top { - when "../../config/type='ACL_IPV4'" { + when "../../config/type='ACL_IPV4' or " + + "../../config/type='ACL_MIXED'" { description "IPv4-layer fields are valid when the ACL type is - IPv4"; + IPv4 or MIXED"; } } uses oc-match:mpls-header-top { - when "../../config/type='ACL_MPLS'" { + when "../../config/type='ACL_MPLS' or " + + "../../config/type='ACL_MIXED'" { description "MPLS-layer fields are valid when the ACL type is - MPLS"; + MPLS or MIXED"; } } uses oc-match:ipv6-protocol-fields-top { - when "../../config/type='ACL_IPV6'" { + when "../../config/type='ACL_IPV6' or " + + "../../config/type='ACL_MIXED'" { description "IPv6-layer fields are valid when the ACL type is - IPv6"; + IPv6 or MIXED"; } } uses oc-match:transport-fields-top { when "../../config/type='ACL_IPV6' or " + - "../../config/type='ACL_IPV4'" { + "../../config/type='ACL_IPV4' or " + + "../../config/type='ACL_MIXED'" { description "Transport-layer fields are valid when specifying - L3 ACL types"; + L3 or MIXED ACL types"; } } From 7a244a8e3259d3771a8ebef92b38b77e1cbadfdd Mon Sep 17 00:00:00 2001 From: Nathaniel Flath Date: Thu, 16 Jun 2022 09:20:47 -0700 Subject: [PATCH 054/372] Add decapsulate-header and network-instance leafs for nexthop. (#637) * Add decapsulate-header to AFT next-hops. - (M) release/models/yang/openconfig-aft-common.yang * Add a decapsulation header leaf to indicate headers that should be removed from the packet. Co-authored-by: Nathaniel Flath Co-authored-by: Rob Shakir --- release/models/aft/openconfig-aft-common.yang | 20 ++++++++++++++++++- .../models/aft/openconfig-aft-ethernet.yang | 10 ++++++++-- release/models/aft/openconfig-aft-ipv4.yang | 11 +++++++--- release/models/aft/openconfig-aft-ipv6.yang | 10 ++++++++-- release/models/aft/openconfig-aft-mpls.yang | 10 ++++++++-- release/models/aft/openconfig-aft-pf.yang | 10 ++++++++-- release/models/aft/openconfig-aft-types.yang | 8 +++++++- release/models/aft/openconfig-aft.yang | 8 +++++++- 8 files changed, 73 insertions(+), 14 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 989241874..711a4b7f4 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description @@ -328,6 +334,18 @@ submodule openconfig-aft-common { specified header type."; } + leaf decapsulate-header { + type oc-aftt:encapsulation-header-type; + description + "When forwarding a packet to the specified next-hop, the local + system performs a decapsulation of the packet - removing the + specified header type. In the case that no next-hop is + specified, the packet header is removed, and a subsequent + forwarding lookup is performed on the packet encapsulated + within the header, matched within the relevant AFT within the + specified network-instance."; + } + uses aft-common-install-protocol; } diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index b12d08540..3a3af3919 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add network-instance and decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description @@ -32,7 +38,7 @@ submodule openconfig-aft-ethernet { revision "2022-01-27" { description - "Add next hop counters and prefix counters"; + "Add next hop counters and prefix counters."; reference "1.0.0"; } diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index 45d80d28a..2cf339f49 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description @@ -32,10 +38,9 @@ submodule openconfig-aft-ipv4 { revision "2022-01-27" { description - "Add next hop counters and prefix counters"; + "Add next hop counters and prefix counters."; reference "1.0.0"; } - revision "2022-01-26" { description "Add vni-label and tunnel-src-ip-address properties under next-hops"; diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 513faee29..ea979f2f5 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description @@ -32,7 +38,7 @@ submodule openconfig-aft-ipv6 { revision "2022-01-27" { description - "Add next hop counters and prefix counters"; + "Add next hop counters and prefix counters."; reference "1.0.0"; } diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index be1f264f0..bfee47c2f 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description @@ -33,7 +39,7 @@ submodule openconfig-aft-mpls { revision "2022-01-27" { description - "Add next hop counters and prefix counters"; + "Add next hop counters and prefix counters."; reference "1.0.0"; } diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 910b454c6..fe107bc49 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description @@ -40,7 +46,7 @@ submodule openconfig-aft-pf { revision "2022-01-27" { description - "Add next hop counters and prefix counters"; + "Add next hop counters and prefix counters."; reference "1.0.0"; } diff --git a/release/models/aft/openconfig-aft-types.yang b/release/models/aft/openconfig-aft-types.yang index 7a29ea659..4b7fc8f64 100644 --- a/release/models/aft/openconfig-aft-types.yang +++ b/release/models/aft/openconfig-aft-types.yang @@ -16,7 +16,13 @@ module openconfig-aft-types { "Types related to the OpenConfig Abstract Forwarding Table (AFT) model"; - oc-ext:openconfig-version "0.3.5"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-05-05" { + description + "Add network-instance and decapsulate-header in NH AFT entry state"; + reference "1.1.0"; + } revision "2021-08-24" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 22e14f369..0c1ce9d71 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -40,7 +40,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2022-06-15" { + description + "Add decapsulate-header in NH AFT entry state"; + reference "2.1.0"; + } revision "2022-05-17" { description From af6bbb1cf9b5df398618c3237b601722eaaba5fb Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Fri, 17 Jun 2022 13:52:38 -0700 Subject: [PATCH 055/372] Update models-ci Go version (#657) * Update models-ci to v8 --- cloudbuild.yaml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 0305594db..b6b95df8d 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -32,7 +32,7 @@ steps: ############### COMMON PREP ############### # Create GOPATH -- name: 'gcr.io/cloud-builders/go:debian' +- name: 'golang' entrypoint: 'bash' args: ['-c', 'mkdir -p /go/src/github.com/openconfig'] volumes: @@ -40,7 +40,7 @@ steps: path: /go id: 'go path creation' # Clone CI repository -- name: 'gcr.io/cloud-builders/go:debian' +- name: 'golang' entrypoint: 'bash' args: - '-c' @@ -48,7 +48,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v7*' | sort -V | tail -1) + branch=$(git tag -l 'v8*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' @@ -57,11 +57,11 @@ steps: path: /go id: 'models-ci clone' # Get CI script dependencies -- name: 'gcr.io/cloud-builders/go:debian' - args: - - 'get' - - './cmd_gen' - - './post_results' +- name: 'golang' + entrypoint: 'go' + args: + - 'install' + - './...' volumes: - name: 'ssh' path: /root/.ssh @@ -72,7 +72,7 @@ steps: dir: '/go/src/github.com/openconfig/models-ci' id: 'models-ci dep' # Generate validator scripts -- name: 'gcr.io/cloud-builders/go:debian' +- name: 'golang' entrypoint: 'bash' args: - -c @@ -97,7 +97,7 @@ steps: ############### REGEXP TESTS ############### # Clone CI repository -- name: 'gcr.io/cloud-builders/go:debian' +- name: 'golang' entrypoint: 'bash' args: - '-c' @@ -115,8 +115,9 @@ steps: waitFor: ['validator prep'] id: 'regexp clone' # Get regexp dependencies -- name: 'gcr.io/cloud-builders/go:debian' - args: ['get', './...'] +- name: 'golang' + entrypoint: 'go' + args: ['install', './...'] volumes: - name: 'gopath' path: /go @@ -169,7 +170,7 @@ steps: id: 'yanglint' ############### MISC-CHECKS ############### -- name: 'gcr.io/cloud-builders/go:debian' +- name: 'golang' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/misc-checks/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -207,17 +208,17 @@ steps: id: 'oc-pyang' ############### GOYANG/YGOT ############### -- name: 'gcr.io/cloud-builders/go:debian' - args: ['get', 'github.com/openconfig/ygot/generator'] +- name: 'golang' + entrypoint: 'go' + args: ['install', 'github.com/openconfig/ygot/generator@latest'] volumes: - name: 'gopath' path: /go env: - 'GOPATH=/go' - - 'GO111MODULE=on' waitFor: ['go path creation'] id: 'goyang-ygot prep' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'golang' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/goyang-ygot/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] From f4402a6d23e6505431a5e8879da1e5ba732e62ed Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Fri, 17 Jun 2022 14:36:47 -0700 Subject: [PATCH 056/372] Use models-ci image for ygot step (#660) --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index b6b95df8d..f59185aeb 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -218,7 +218,7 @@ steps: - 'GOPATH=/go' waitFor: ['go path creation'] id: 'goyang-ygot prep' -- name: 'golang' +- name: 'gcr.io/$PROJECT_ID/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/goyang-ygot/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] From 200af096528411e2ba26dc04d2dced4e823c7be9 Mon Sep 17 00:00:00 2001 From: Abhiram Kalluru <87454055+akalluru1@users.noreply.github.com> Date: Fri, 17 Jun 2022 17:20:22 -0700 Subject: [PATCH 057/372] Add state-synced container under afts container (#646) * (M) release/models/aft/openconfig-aft.yang Add state-synced container under afts container Co-authored-by: Rob Shakir * (A) release/models/aft/openconfig-aft-state-synced.yang Co-authored-by: Rob Shakir --- release/models/aft/openconfig-aft-common.yang | 8 ++- .../models/aft/openconfig-aft-ethernet.yang | 8 ++- release/models/aft/openconfig-aft-ipv4.yang | 8 ++- release/models/aft/openconfig-aft-ipv6.yang | 8 ++- release/models/aft/openconfig-aft-mpls.yang | 8 ++- release/models/aft/openconfig-aft-pf.yang | 8 ++- .../aft/openconfig-aft-state-synced.yang | 61 +++++++++++++++++++ release/models/aft/openconfig-aft.yang | 36 ++++++++++- 8 files changed, 136 insertions(+), 9 deletions(-) create mode 100644 release/models/aft/openconfig-aft-state-synced.yang diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 711a4b7f4..3d4b86cb7 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 3a3af3919..57ef4205f 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index 2cf339f49..e43766513 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index ea979f2f5..4c9448213 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index bfee47c2f..2eb2ccfc8 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index fe107bc49..59cd45fc8 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang new file mode 100644 index 000000000..e99163afe --- /dev/null +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -0,0 +1,61 @@ +submodule openconfig-aft-state-synced { + belongs-to "openconfig-aft" { + prefix "oc-aft"; + } + + import openconfig-extensions { prefix "oc-ext"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "Submodule containing definitions of groupings for the state + synced signals corresponding to various abstract forwarding tables."; + + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } + + grouping aft-state-synced-structural { + description + "Structural grouping defining the schema for the state synced signals + of various abstract forwarding table."; + + container state { + config false; + description + "Operational state parameters relating to the state + synced signals of various AFTs."; + + leaf ipv4-unicast { + type boolean; + default false; + description + "State synced signal indicating consistent device snapshot of + IPv4 unicast AFT entries. Before setting this flag to true + next-hop-groups and next-hops AFT entries, associated with + ipv4-unicast AFT entries, are expected to be consistent with + device snapshot."; + } + + leaf ipv6-unicast { + type boolean; + default false; + description + "State synced signal indicating consistent device snapshot of + IPv6 unicast AFT entries. Before setting this flag to true + next-hop-groups and next-hops AFT entries, associated with + ipv6-unicast AFT entries, are expected to be consistent with + device snapshot."; + } + } + } +} diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 0c1ce9d71..d601d6910 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -20,6 +20,8 @@ module openconfig-aft { include openconfig-aft-ethernet; // Include the common cross-AFT entities. include openconfig-aft-common; + // Include the state synced submodule. + include openconfig-aft-state-synced; organization "OpenConfig working group"; @@ -40,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2022-06-16" { + description + "Add state-synced container under afts."; + reference "2.2.0"; + } revision "2022-06-15" { description @@ -190,10 +198,11 @@ module openconfig-aft { destination prefix which is matched by ingress packets. The data set represented by the IPv6 Unicast AFTis the set - of entries within the IPv6 RIB that "; + of entries within the IPv6 unicast RIB that have been + selected for installation into the FIB of the device + exporting the data structure."; uses aft-ipv6-unicast-structural; - } container policy-forwarding { @@ -232,6 +241,27 @@ module openconfig-aft { uses aft-ethernet-structural; } + container state-synced { + description + "In some cases AFT streaming (e.g., over gNMI) is an eventually consistent system. + When the device updates an entry it is usually expected to + stream an update to the client within a vert short amount + of time (few milliseconds). Given this is the casee, a telemetry collector or a + controller that parse the AFT doesn't have a consistent + snapshot, or overall versioned copy of AFT with the device + at any specific point of time. + + In certain failure modes like device boot up, gNMI daemon + failure and device/routing engine stateful switchover + a telemetry collector or a controller need a flag to + determine whether it is in consistent with the device or + not such that it can a corrective action when needed. + A device sets this leaf or flag to indicate to the + client that AFT data/view is consistent."; + + uses aft-state-synced-structural; + } + uses aft-next-hop-groups-structural; uses aft-nhop-structural; } From db7a87d46cbb0db64723ab07c7be72fb5496a4a9 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Fri, 17 Jun 2022 19:26:09 -0700 Subject: [PATCH 058/372] Implement acceptable interface identifier range for P4RT (#653) * Implement acceptable interface identifier range for P4RT * (M) release/models/p4rt/openconfig-p4rt.yang - Add range statement to interface identifier in conformance to P4RT specification v1.3.0 - Description cleanup to map OpenConfig terminology to P4RT specification terminology * Add range breakdown to description field --- release/models/p4rt/openconfig-p4rt.yang | 66 +++++++++++++++++------- 1 file changed, 47 insertions(+), 19 deletions(-) diff --git a/release/models/p4rt/openconfig-p4rt.yang b/release/models/p4rt/openconfig-p4rt.yang index 4152cfe07..722129509 100644 --- a/release/models/p4rt/openconfig-p4rt.yang +++ b/release/models/p4rt/openconfig-p4rt.yang @@ -23,10 +23,17 @@ module openconfig-p4rt { the P4RT service, or allow it to be used alongside other OpenConfig data models. - The P4RT protocol specification is linkde from https://p4.org/specs/ + The P4RT protocol specification is linked from https://p4.org/specs/ under the P4Runtime heading."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "0.3.0"; + + revision 2022-06-08 { + description + "Add valid range for interface identifier and update node + descriptions per P4 Runtime Specification."; + reference "0.3.0"; + } revision 2021-07-20 { description @@ -52,17 +59,34 @@ module openconfig-p4rt { are running the P4RT service."; leaf id { - type uint32; + type uint32 { + range 1..4294967039; + } description - "The numeric identifier used by the controller to address the interface. - This ID is assigned by an external-to-the-device entity (e.g., an SDN - management system) to establish an externally deterministic numeric - reference for the interface. The programming entity must ensure that - the ID is unique within the required context. - - Note that this identifier is used only when a numeric reference to the - interface is required, it does not replace the unique name assigned to - the interface."; + "The numeric identifier (SDN Port) used by the controller to + address the interface. This ID is assigned by an + external-to-the-device entity (e.g., an SDN management system) + to establish an externally deterministic numeric reference for + the interface. The programming entity must ensure that the ID is + unique within the required context. + + Note that this identifier is used only when a numeric reference + to the interface is required, it does not replace the unique + name assigned to the interface. + + Ranges: + + 0x00000000: Unspecified/Invalid + 0x00000001: Minimum Port Value + 0xFFFFFEFF: Maximum Port Value + + Reserved: 0xFFFFFFF0 - 0xFFFFFFFF + 0xFFFFFFFA: Recirculate + 0xFFFFFFFD: CPU + "; + reference + "P4 Runtime Specification v1.3.0 + https://p4.org/p4-spec/p4runtime/main/P4Runtime-Spec.html#sec-translation-of-port-numbers"; } } @@ -88,16 +112,20 @@ module openconfig-p4rt { leaf node-id { type uint64; description - "The numeric ID used by the controller to address the integrated circuit, - which may be referred to as a 'device', 'node' or 'target' by the P4RT - specification. + "The numeric ID (device_id) used by the controller to address + the integrated circuit, which may be referred to as a 'device', + 'node' or 'target' by the P4RT specification. - Each switching ASIC (i.e., node) is addressed by the external entity - based on its numeric identifier. + Each switching ASIC (i.e., node) is addressed by the external + entity based on its numeric identifier. - The node ID is specified in addition to the string identifier assigned to - the integrated circuit within the /components/component list."; + The node ID is specified in addition to the string identifier + assigned to the integrated circuit within the + /components/component list."; } + reference + "P4 Runtime Specification v1.3.0 + https://p4.org/p4-spec/p4runtime/main/P4Runtime-Spec.html#sec-write-rpc"; } augment "/oc-platform:components/oc-platform:component/" + From f3349778e3cb3b0987f3ec18acea329ea4bf30e6 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 21 Jun 2022 17:48:40 -0700 Subject: [PATCH 059/372] Add prefix qualifiers to `network-instance-ref`. (#557) * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Add prefixes to network-instance-ref typedef. --- .../openconfig-network-instance-l2.yang | 8 +++++++- .../network-instance/openconfig-network-instance.yang | 11 +++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index fb95574b8..3e19c4a75 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2022-06-21" { + description + "Add prefix to qualification netinst-ref."; + reference "1.2.0"; + } revision "2022-04-20" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 7a5b007cc..15241acf3 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -47,7 +47,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2022-06-21" { + description + "Add prefix to qualification netinst-ref."; + reference "1.2.0"; + } revision "2022-04-20" { description @@ -247,7 +253,8 @@ module openconfig-network-instance { typedef network-instance-ref { type leafref { - path "/network-instances/network-instance/config/name"; + path "/oc-netinst:network-instances/oc-netinst:network-instance/" + + "oc-netinst:config/oc-netinst:name"; } description "A re-usable type that can be referenced within other From d31dd1a137022700daa9c3ec33e471c48fd431cf Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Mon, 11 Jul 2022 16:30:06 -0700 Subject: [PATCH 060/372] Remove invalid openconfig-if-types references (#662) * (D) release/models/interfaces/openconfig-if-types.yang - Deletion of unused openconfig-if-types * (M) release/models/interfaces/openconfig-if-aggregate.yang * (M) release/models/bfd/openconfig-bfd.yang - Removal of invalid when statements to unused identities --- release/models/bfd/openconfig-bfd.yang | 12 +- release/models/interfaces/.spec.yml | 1 - .../interfaces/openconfig-if-aggregate.yang | 12 +- .../interfaces/openconfig-if-types.yang | 108 ------------------ 4 files changed, 15 insertions(+), 118 deletions(-) delete mode 100644 release/models/interfaces/openconfig-if-types.yang diff --git a/release/models/bfd/openconfig-bfd.yang b/release/models/bfd/openconfig-bfd.yang index 8a0755bf8..50e516c9f 100644 --- a/release/models/bfd/openconfig-bfd.yang +++ b/release/models/bfd/openconfig-bfd.yang @@ -11,7 +11,6 @@ module openconfig-bfd { import openconfig-extensions { prefix "oc-ext"; } import openconfig-types { prefix "oc-types"; } import openconfig-interfaces { prefix "oc-if"; } - import openconfig-if-types { prefix "oc-ift"; } import openconfig-inet-types { prefix "oc-inet"; } import openconfig-policy-types { prefix "oc-pol-types"; } import ietf-inet-types { prefix "ietf-if"; } @@ -27,7 +26,13 @@ module openconfig-bfd { "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) configuration and operational state."; - oc-ext:openconfig-version "0.2.3"; + oc-ext:openconfig-version "0.2.4"; + + revision "2022-06-28" { + description + "Remove reference to invalid oc-ift type check"; + reference "0.2.4"; + } revision "2021-06-16" { description @@ -527,9 +532,6 @@ module openconfig-bfd { container micro-bfd-sessions { when "/oc-if:interfaces/oc-if:interface" + - "[oc-if:name=current()/../interface-ref/config/interface]/" + - "oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE' or " + - "/oc-if:interfaces/oc-if:interface" + "[oc-if:name=current()/../interface-ref/config/interface]/" + "oc-if:config/oc-if:type = 'ietf-if:ieee8023adLag'" { description diff --git a/release/models/interfaces/.spec.yml b/release/models/interfaces/.spec.yml index a192cd795..2aa3746fa 100644 --- a/release/models/interfaces/.spec.yml +++ b/release/models/interfaces/.spec.yml @@ -1,6 +1,5 @@ - name: openconfig-interfaces docs: - - yang/interfaces/openconfig-if-types.yang - yang/interfaces/openconfig-interfaces.yang - yang/interfaces/openconfig-if-ip.yang - yang/interfaces/openconfig-if-aggregate.yang diff --git a/release/models/interfaces/openconfig-if-aggregate.yang b/release/models/interfaces/openconfig-if-aggregate.yang index 996a8c599..f6a577bb0 100644 --- a/release/models/interfaces/openconfig-if-aggregate.yang +++ b/release/models/interfaces/openconfig-if-aggregate.yang @@ -11,7 +11,6 @@ module openconfig-if-aggregate { import openconfig-interfaces { prefix oc-if; } import openconfig-if-ethernet { prefix oc-eth; } import iana-if-type { prefix ianaift; } - import openconfig-if-types { prefix oc-ift; } import openconfig-extensions { prefix oc-ext; } // meta @@ -24,7 +23,13 @@ module openconfig-if-aggregate { description "Model for managing aggregated (aka bundle, LAG) interfaces."; - oc-ext:openconfig-version "2.4.3"; + oc-ext:openconfig-version "2.4.4"; + + revision "2022-06-28" { + description + "Remove reference to invalid oc-ift type check"; + reference "2.4.4"; + } revision "2020-05-01" { description @@ -214,8 +219,7 @@ module openconfig-if-aggregate { description "Adds LAG configuration to the interface module"; uses aggregation-logical-top { - when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " + - "oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" { + when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag'" { description "active when the interface is set to type LAG"; } diff --git a/release/models/interfaces/openconfig-if-types.yang b/release/models/interfaces/openconfig-if-types.yang deleted file mode 100644 index 27d2dc1d8..000000000 --- a/release/models/interfaces/openconfig-if-types.yang +++ /dev/null @@ -1,108 +0,0 @@ -module openconfig-if-types { - yang-version "1"; - - namespace "http://openconfig.net/yang/openconfig-if-types"; - - prefix "oc-ift"; - - // import statements - import openconfig-extensions { prefix oc-ext; } - - // meta - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - netopenconfig@googlegroups.com"; - - description - "This module contains a set of interface type definitions that - are used across OpenConfig models. These are generally physical - or logical interfaces, distinct from hardware ports (which are - described by the OpenConfig platform model)."; - - oc-ext:openconfig-version "0.2.1"; - - revision "2018-11-21" { - description - "Add OpenConfig module metadata extensions."; - reference "0.2.1"; - } - - revision "2018-01-05" { - description - "Add tunnel types into the INTERFACE_TYPE identity."; - reference "0.2.0"; - } - - revision "2016-11-14" { - description - "Initial version"; - reference "0.1.0"; - } - - // OpenConfig specific extensions for module metadata. - oc-ext:regexp-posix; - oc-ext:catalog-organization "openconfig"; - oc-ext:origin "openconfig"; - - identity INTERFACE_TYPE { - description - "Base identity from which interface types are derived."; - } - - identity IF_ETHERNET { - base INTERFACE_TYPE; - description - "Ethernet interfaces based on IEEE 802.3 standards, as well - as FlexEthernet"; - reference - "IEEE 802.3-2015 - IEEE Standard for Ethernet - OIF Flex Ethernet Implementation Agreement 1.0"; - } - - identity IF_AGGREGATE { - base INTERFACE_TYPE; - description - "An aggregated, or bonded, interface forming a - Link Aggregation Group (LAG), or bundle, most often based on - the IEEE 802.1AX (or 802.3ad) standard."; - reference - "IEEE 802.1AX-2008"; - } - - identity IF_LOOPBACK { - base INTERFACE_TYPE; - description - "A virtual interface designated as a loopback used for - various management and operations tasks."; - } - - identity IF_ROUTED_VLAN { - base INTERFACE_TYPE; - description - "A logical interface used for routing services on a VLAN. - Such interfaces are also known as switch virtual interfaces - (SVI) or integrated routing and bridging interfaces (IRBs)."; - } - - identity IF_SONET { - base INTERFACE_TYPE; - description - "SONET/SDH interface"; - } - - identity IF_TUNNEL_GRE4 { - base INTERFACE_TYPE; - description - "A GRE tunnel over IPv4 transport."; - } - - identity IF_TUNNEL_GRE6 { - base INTERFACE_TYPE; - description - "A GRE tunnel over IPv6 transport."; - } - -} From 5ee0298f1616d7de5d14c8837073239686e21c9e Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Mon, 11 Jul 2022 17:25:28 -0700 Subject: [PATCH 061/372] Update sFlow and restructure top-level sampling container (#522) * Update sFlow and restructure top-level sampling container * (A) release/models/sampling/openconfig-sampling.yang - Add sampling module with top-level container for sampling attachment point * (M) release/models/sampling/openconfig-sampling-sflow.yang - Relocate attachment to augment top-level sampling module - Split sampling-rate to ingress/egress at global/interface level - Add support for polling-interval at global/interface level - Add support for setting IPv4/IPv6 agent-id - Add support for setting IPv4/IPv6 source-addresses - Add support for DSCP marking of sFlow PDUs per collector * Adjust originated-qos-marking -> dscp and move to global * Relocate source-address node to collector for NI awareness --- release/models/sampling/.spec.yml | 2 + .../sampling/openconfig-sampling-sflow.yang | 127 ++++++++++++------ .../models/sampling/openconfig-sampling.yang | 44 ++++++ 3 files changed, 134 insertions(+), 39 deletions(-) create mode 100644 release/models/sampling/openconfig-sampling.yang diff --git a/release/models/sampling/.spec.yml b/release/models/sampling/.spec.yml index c861a3d96..d299fbc2b 100644 --- a/release/models/sampling/.spec.yml +++ b/release/models/sampling/.spec.yml @@ -1,6 +1,8 @@ - name: openconfig-sampling docs: + - yang/sampling/openconfig-sampling.yang - yang/sampling/openconfig-sampling-sflow.yang build: + - yang/sampling/openconfig-sampling.yang - yang/sampling/openconfig-sampling-sflow.yang run-ci: true diff --git a/release/models/sampling/openconfig-sampling-sflow.yang b/release/models/sampling/openconfig-sampling-sflow.yang index 761f8b4a4..e7d078d37 100644 --- a/release/models/sampling/openconfig-sampling-sflow.yang +++ b/release/models/sampling/openconfig-sampling-sflow.yang @@ -13,6 +13,7 @@ module openconfig-sampling-sflow { import openconfig-interfaces { prefix oc-if; } import openconfig-yang-types { prefix oc-yang; } import openconfig-network-instance { prefix oc-netinst; } + import openconfig-sampling { prefix oc-sampling; } // meta @@ -29,7 +30,14 @@ module openconfig-sampling-sflow { RFC 3176 - InMon Corporation's sFlow: A Method for Monitoring Traffic in Switched and Routed Networks"; - oc-ext:openconfig-version "0.1.0"; + revision "2022-06-21" { + description + "Add agent-id/source-address for IPv4/IPv6; add polling-interval; + add global dscp marking for generated packets; moved sampling-rate + to ingress/egress; moved top-level sampling container to separate + module;"; + reference "1.0.0"; + } revision "2020-06-26" { description @@ -37,6 +45,7 @@ module openconfig-sampling-sflow { reference "0.1.0"; } + oc-ext:openconfig-version "1.0.0"; grouping sflow-interfaces-config { description @@ -58,15 +67,8 @@ module openconfig-sampling-sflow { for a specific interface."; } - leaf sampling-rate { - type uint32; - description - "If sFlow is enabled on the interface, this leaf may be - used to override the global sampling rate for a specific - interface. The sampling rate semantics are the same as the - system-wide leaf."; - } - + uses sflow-polling-interval-config; + uses sflow-sampling-rate-config; } grouping sflow-interfaces-state { @@ -129,7 +131,7 @@ module openconfig-sampling-sflow { leaf address { type oc-inet:ip-address; description - "IP address of the sFlow collector."; + "IPv4/IPv6 address of the sFlow collector."; } leaf port { @@ -139,6 +141,13 @@ module openconfig-sampling-sflow { "UDP port number for the sFlow collector."; } + leaf source-address { + type oc-inet:ip-address; + description + "Sets the source IPv4/IPv6 address for sFlow datagrams sent + to sFlow collectors."; + } + leaf network-instance { type oc-netinst:network-instance-ref; description @@ -211,6 +220,49 @@ module openconfig-sampling-sflow { } } + grouping sflow-sampling-rate-config { + description + "Configuration data for sFlow sample rates"; + + leaf ingress-sampling-rate { + type uint32; + description + "Sets the ingress packet sampling rate. The rate is expressed + as an integer N, where the intended sampling rate is 1/N + packets. An implementation may implement the sampling rate as + a statistical average, rather than a strict periodic sampling. + + The allowable sampling rate range is generally a property of + the system, e.g., determined by the capability of the + hardware."; + } + + leaf egress-sampling-rate { + type uint32; + description + "Sets the egress packet sampling rate. The rate is expressed + as an integer N, where the intended sampling rate is 1/N + packets. An implementation may implement the sampling rate as + a statistical average, rather than a strict periodic sampling. + + The allowable sampling rate range is generally a property of + the system, e.g., determined by the capability of the + hardware."; + } + } + + grouping sflow-polling-interval-config { + description + "Configuration data for sFlow polling intervals"; + + leaf polling-interval { + type uint16; + units seconds; + description + "Sets the traffic sampling polling interval."; + } + } + grouping sflow-global-config { description "Configuration data for global sflow"; @@ -222,25 +274,29 @@ module openconfig-sampling-sflow { "Enables or disables sFlow sampling for the device."; } - leaf source-address { - type oc-inet:ip-address; + leaf agent-id-ipv4 { + type oc-inet:ipv4-address; description - "Sets the source IP address for sFlow datagrams sent to - sFlow collectors."; + "Sets the agent identifier for IPv4 PDUs."; + reference + "RFC 3176 - InMon Corporation's sFlow: A Method for + Monitoring Traffic in Switched and Routed Networks"; } - leaf sampling-rate { - type uint32; + leaf agent-id-ipv6 { + type oc-inet:ipv6-address; description - "Sets the global packet sampling rate. The rate is - is expressed as an integer N, where the intended sampling - rate is 1/N packets. An implementation may implement the - sampling rate as a statistical average, rather than a strict - periodic sampling. - - The allowable sampling rate range is generally a - property of the system, e.g., determined by the - capability of the hardware."; + "Sets the agent identifier for IPv6 PDUs."; + reference + "RFC 3176 - InMon Corporation's sFlow: A Method for + Monitoring Traffic in Switched and Routed Networks"; + } + + leaf dscp { + type oc-inet:dscp; + description + "DSCP marking of packets generated by the sFlow subsystem + on the network device."; } leaf sample-size { @@ -254,6 +310,9 @@ module openconfig-sampling-sflow { "RFC 3176 - InMon Corporation's sFlow: A Method for Monitoring Traffic in Switched and Routed Networks"; } + + uses sflow-polling-interval-config; + uses sflow-sampling-rate-config; } grouping sflow-global-state { @@ -292,21 +351,11 @@ module openconfig-sampling-sflow { } } - grouping sampling-top { + augment "/oc-sampling:sampling" { description - "Top-level grouping for traffic sampling data."; + "Add sFlow configuration/state to the openconfig-sampling model."; - container sampling { - description - "Top-level container for data related to traffic sampling - protocols."; - - uses sflow-global-top; - } + uses sflow-global-top; } - // data definition statements - - uses sampling-top; - } diff --git a/release/models/sampling/openconfig-sampling.yang b/release/models/sampling/openconfig-sampling.yang new file mode 100644 index 000000000..d72f6646f --- /dev/null +++ b/release/models/sampling/openconfig-sampling.yang @@ -0,0 +1,44 @@ +module openconfig-sampling { + yang-version "1"; + namespace "http://openconfig.net/yang/sampling"; + prefix "oc-sampling"; + + import openconfig-extensions { + prefix oc-ext; + } + + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines top-level configuration and operational + state data related to traffic sampling. + + For modularity purposes, the top-level sampling container provides + a natural attachment point for implementations such as sFlow, IPFix, + NETFLOW"; + + revision 2022-06-21 { + description + "Initial revision"; + reference "0.1.0"; + } + + oc-ext:openconfig-version "0.1.0"; + + grouping sampling-top { + description + "Top level sampling containers"; + + container sampling { + description + "Top-level container for sampling-related configuration and + operational state data"; + } + } + + uses sampling-top; +} From f2279d4d377b968cfbf3b68e7635cef5a6b82090 Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Campos Date: Wed, 13 Jul 2022 03:03:19 +0000 Subject: [PATCH 062/372] Add PCE server protocol parameters (#581) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add PCE Protocol parametrization at global level for servers and LSP control * Add PCE Protocol parameters at global level for PCE servers * Add PCEP as a protocol in the Network Instance configuration * Add authentication keychain for PCEP * (M) release/models/pcep/openconfig-pcep.yang * (M) release/models/mpls/openconfig-mpls-te.yang * (M) openconfig-mpls-static.yang * (M) openconfig-mpls-te.yang * (M) openconfig-mpls.yang * (M) openconfig-network-instance.yang * (M) openconfig-network-instance-l2.yang Co-authored-by: Óscar González de Dios Co-authored-by: sbarguil Co-authored-by: Chris Luke Co-authored-by: Rob Shakir --- release/models/mpls/openconfig-mpls-igp.yang | 8 +- .../models/mpls/openconfig-mpls-static.yang | 8 +- release/models/mpls/openconfig-mpls-te.yang | 27 +- release/models/mpls/openconfig-mpls.yang | 8 +- .../openconfig-network-instance-l2.yang | 9 +- .../openconfig-network-instance.yang | 19 +- release/models/pcep/.spec.yml | 6 + release/models/pcep/openconfig-pcep.yang | 380 ++++++++++++++++++ .../policy/openconfig-policy-types.yang | 16 +- 9 files changed, 470 insertions(+), 11 deletions(-) create mode 100644 release/models/pcep/.spec.yml create mode 100644 release/models/pcep/openconfig-pcep.yang diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index 0748671eb..a2f724425 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,13 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.2.2"; + oc-ext:openconfig-version "3.3.0"; + + revision "2022-02-11" { + description + "Add lsp-path PCE control mode"; + reference "3.3.0"; + } revision "2021-07-28" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index d0ebaf9fe..e06ca5361 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,13 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.2.2"; + oc-ext:openconfig-version "3.3.0"; + + revision "2022-02-11" { + description + "Add lsp-path PCE control mode"; + reference "3.3.0"; + } revision "2021-07-28" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index ceeba8a3c..d70cca984 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -15,6 +15,7 @@ submodule openconfig-mpls-te { import openconfig-types { prefix oc-types; } import openconfig-yang-types { prefix yang; } import openconfig-extensions { prefix oc-ext; } + import openconfig-pcep { prefix oc-pcep; } // meta organization "OpenConfig working group"; @@ -29,7 +30,13 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.2.2"; + oc-ext:openconfig-version "3.3.0"; + + revision "2022-02-11" { + description + "Add lsp-path PCE control mode"; + reference "3.3.0"; + } revision "2021-07-28" { description @@ -868,17 +875,27 @@ submodule openconfig-mpls-te { equally desirable paths during CSFP computation"; } - leaf path-computation-server { when "../path-computation-method = 'oc-mplst:EXTERNALLY_QUERIED'" { description "The path-computation server when the path is externally queried"; } - type inet:ip-address; + type leafref { + path "../../../../../../../../../../protocols/protocol/pcep/path-computation-servers/" + + "path-computation-server/pce-server-address"; + } + description + "Reference to the address of a previously configured + external path computation server."; + } + + leaf path-control { + type oc-pcep:lsp-control-type; description - "Address of the external path computation - server"; + "Set the LSP path control mode as PCE_DELEGATED + PCC_CONTROLLED or PCC_REPORT_ONLY information + state to the PCE."; } leaf explicit-path-name { diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index c89fdf431..0cf49a7b7 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -71,7 +71,13 @@ module openconfig-mpls { +-------+ "; - oc-ext:openconfig-version "3.2.2"; + oc-ext:openconfig-version "3.3.0"; + + revision "2022-02-11" { + description + "Add lsp-path PCE control mode"; + reference "3.3.0"; + } revision "2021-07-28" { description diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 3e19c4a75..68ccc20a0 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2022-07-04" { + description + "Add pcep protocol to network-instance"; + reference "1.3.0"; + } revision "2022-06-21" { description @@ -49,6 +55,7 @@ submodule openconfig-network-instance-l2 { description "Fix some broken xpath references in when statements."; reference "0.16.3"; + } revision "2021-11-17" { diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 15241acf3..29795f39b 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -29,6 +29,7 @@ module openconfig-network-instance { import openconfig-pim { prefix "oc-pim"; } import openconfig-igmp { prefix "oc-igmp"; } import openconfig-evpn { prefix "oc-evpn"; } + import openconfig-pcep { prefix "oc-pcep"; } // include submodules include openconfig-network-instance-l2; @@ -47,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2022-07-04" { + description + "Add PCEP protocol to network-instance"; + reference "1.3.0"; + } revision "2022-06-21" { description @@ -860,6 +867,16 @@ module openconfig-network-instance { Group Management Protocol (IGMP)."; } + uses oc-pcep:pcep-top { + when "./config/identifier = 'oc-pol-types:PCEP'" { + description + "Include PCEP configuration when the protocol is of type + PCEP"; + } + description + "Configuration and state parameters relating to the Path + Computation Element Protocol (PCEP)."; + } } } } diff --git a/release/models/pcep/.spec.yml b/release/models/pcep/.spec.yml new file mode 100644 index 000000000..5e6b9bf34 --- /dev/null +++ b/release/models/pcep/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-pcep + docs: + - yang/pcep/openconfig-pcep.yang + build: + - yang/pcep/openconfig-pcep.yang + run-ci: true diff --git a/release/models/pcep/openconfig-pcep.yang b/release/models/pcep/openconfig-pcep.yang new file mode 100644 index 000000000..eebbeae88 --- /dev/null +++ b/release/models/pcep/openconfig-pcep.yang @@ -0,0 +1,380 @@ +module openconfig-pcep { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/pcep"; + + prefix "oc-pcep"; + + // import some basic types + import openconfig-extensions { prefix "oc-ext";} + import openconfig-inet-types { prefix "oc-inet";} + import openconfig-types { prefix "oc-types";} + import openconfig-keychain { prefix "oc-keychain";} + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state data + relating to Path Computation Element Protocol (PCEP) for communications + between a network element (router) acting as PCC and a PCE server, + according to RFC4655 definitions: + + -PCC: Path Computation Client; any client application requesting a + path computation to be performed by a Path Computation Element. + + -PCE: Path Computation Element; an entity (component, application, or + network node) that is capable of computing a network path or route + based on a network graph and applying computational constraints. + + Also according to RFC4655, a PCE can be either stateful or + stateless. In the former case, there is a strict synchronization + between the PCE and not only the network states (in term of + topology and resource information), but also the set of computed + paths and reserved resources in use in the network. Conversely, + stateless PCEs do not have to remember any computed path and each + set of request(s) is processed independently of each other. For + example, stateless PCEs may compute paths based on current TED + information, which could be out of sync with actual network state + given other recent PCE-computed paths changes. + + On the other hand, RFC8051 defines for Stateful PCE two modes of + operation: + + -Passive Stateful PCE: a PCE that uses LSP state information + learned from PCCs to optimize path computations. It does not + actively update LSP state. A PCC maintains synchronization with + the PCE. + + -Active Stateful PCE: a PCE that may issue recommendations to + the network. For example, an Active Stateful PCE may use the + Delegation mechanism to update. + + LSP parameters in those PCCs that delegate control over their LSPs to + the PCE."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2022-02-11" { + description + "Initial revision."; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // typedef statements + + typedef pce-mode-type { + type enumeration { + enum STATELESS { + description + "PCEP peer announce Stateless capability"; + } + enum STATEFUL_PASSIVE { + description + "PCEP peer announce Stateful Passive capability"; + } + enum STATEFUL_ACTIVE { + description + "PCEP peer announce Stateless Active"; + } + } + description + "The type of PCEP capability supported which is advertised in the + Open message when a PCEP session is established. It could be: + + - Stateless PCEs: A PCE that do not have to remember any + computed path and each set of request(s) is processed + independently of each other(RFC4655). + + - Passive Stateful PCE: a PCE that uses LSP state information + learned from PCCs to optimize path computations, but it does + not actively update LSP state(RFC8051). - Active Stateful + PCE: a PCE that may issue recommendations to the network by + using the Delegation mechanism to update LSP parameters in + those PCCs that delegate control over their LSPs to the PCE + (RFC8051)."; + reference + "RFC8051: Applicability of a Stateful Path Computation Element (PCE)"; + } + + typedef lsp-control-type { + type enumeration { + enum PCE_DELEGATED { + description + "PCC (Router) delegates control over LSP path to PCE (stateful active)"; + } + enum PCC_CONTROLLED { + description + "PCC (Router) don't allow or revoke control over LSP path to + PCE (stateless)"; + } + enum PCC_REPORT_ONLY { + description + "PCC (Router) only inform to a PCE whenever the state of an LSP changes, + but without delegating control (stateful passive)"; + } + } + description + "The LSP path can be delegated to PCE, locally controled by PCC + or only report information state to the PCE."; + reference + "RFC8231: Path Computation Element Communication Protocol (PCEP)"; + } + + grouping pcep-servers-top { + description + "Configuration and state data for establishing a PCEP session with PCE servers."; + + container path-computation-servers { + description + "Defines PCE server parameters."; + + list path-computation-server { + key "pce-server-address"; + + description + "Configuration and state information for communication with a PCE server."; + + leaf pce-server-address { + type leafref { + path "../config/pce-server-address"; + } + description + "IPv4 address of PCE server."; + } + + container config { + description + "PCE server configuration."; + + uses pce-server-config; + } + + container state { + config false; + description + "PCE server state."; + + uses pce-server-config; + } + + uses pcep-timers-top; + uses pcep-authentication-top; + } + } + } + + grouping pce-server-config { + description + "Configuration data for establishing a PCEP session with pce servers."; + + leaf pce-server-address { + type oc-inet:ip-address; + description + "The destination IP address of the PCE server for PCEP service. + Specify multiple entries in the path-computation-server-list to provide redundancy. + When multiple candidate servers are specified for a single client, + they are prioritized according to preference."; + } + + leaf id { + type string; + description + "A unique name for the PCE server."; + } + + leaf port { + type oc-inet:port-number; + default 4189; + description + "The destination TCP port used for PCEP service in the PCE server."; + } + + leaf source-address { + type oc-inet:ip-address; + description + "The source IP address used by PCC(Router) to establish PCEP session."; + } + + leaf pce-type { + type pce-mode-type; + description + "The type of PCEP capability supported which is advertised in the Open + message when a PCEP session is established."; + } + + leaf preference { + type uint8; + description + "When multiple PCE servers are specified, the candidate PCE server + with the highest preference is selected to calculate paths. + The greater or lower the value, the higher the preference could + dependon vendor implementation. If no preference value is set, indicate + the lowest preference or no preference at all."; + } + + leaf report-local-lsp { + type boolean; + default false; + description + "Specifies whether the PCC (Router) will advertise LSP existence and state + for LSPs that are not controlled by any PCE (for example, LSPs that are + statically configured at the PCC) but without delegating them."; + } + + leaf pce-initiated-capability { + type boolean; + default false; + description + "Indicates to PCE that PCC (Router) supports PCE-initiated LSP paths instantiation. + A PCE can initiate LSPs only for PCCs that advertised this capability."; + } + + leaf sr-support { + type boolean; + default false; + description + "Indicates to PCE that PCC (Router) supports Segment-Routing + to set up LSP paths in addition to RSVP-TE."; + } + } + + grouping pcep-timers-top { + description + "Configuration and state data for timers applicable + to a established PCEP session with PCE server."; + + container timers { + description + "This container defines PCEP timers."; + + container config { + description + "This container defines PCEP timers configuration."; + + uses pcep-timers-config; + } + + container state { + config false; + description + "This container defines state information for PCEP timers."; + + uses pcep-timers-config; + } + } + } + + grouping pcep-timers-config { + description + "Defines timers that applies to a PCEP session."; + + leaf keepalive { + type uint8; + units seconds; + default 30; + description + "Interval for sending keepalive messages over PCE session."; + } + + leaf dead-timer { + type uint8; + units seconds; + default 120; + description + "Interval after which PCE session is declared dead."; + } + + leaf redelegation-timeout-interval { + type uint16; + units seconds; + description + "When a PCEP session is terminated, the period of time a PCC waits + before revoking LSP delegation and attempting to redelegate LSPs + associated with the terminated PCEP session to an alternate PCE."; + } + + leaf state-timeout-interval { + type uint16; + units seconds; + description + "When a PCEP session is terminated, the period of time a PCC waits + before before flushing LSP state associated with that PCEP session + and reverting to operator-defined default parameters or behaviors."; + } + } + + grouping pcep-authentication-top { + description + "Grouping containing PCEP authentication attributes"; + + container authentication { + description + "Global PCEP authentication"; + container config { + description + "Configuration of PCEP authentication attributes"; + uses pcep-authentication-config; + } + container state { + config false; + description + "PCEP authentication state."; + uses pcep-authentication-config; + } + } + } + + grouping pcep-authentication-config { + description + "PCEP authentication parameters container."; + leaf enable { + type boolean; + default false; + description + "Enables PCEP authentication on the node."; + } + + leaf authentication-key { + type oc-types:routing-password; + description + "Password (key) used for securing a PCEP session using + TCP-MD5 authentication"; + reference + "RFC1321: The MD5 Message-Digest Algorithm. + RFC5440: PCEP Specification"; + } + + leaf keychain { + type oc-keychain:keychain-ref; + description + "Reference to a predefined keychain that should be used to secure + PCEP session"; + } +} + + grouping pcep-top { + description + "Top-level grouping for PCEP configuration."; + + container pcep { + description + "Top-level PCEP configuration and operational state."; + + uses pcep-servers-top; + } + } + +} diff --git a/release/models/policy/openconfig-policy-types.yang b/release/models/policy/openconfig-policy-types.yang index 48646bd93..86b407e39 100644 --- a/release/models/policy/openconfig-policy-types.yang +++ b/release/models/policy/openconfig-policy-types.yang @@ -24,7 +24,13 @@ module openconfig-policy-types { policy. It can be imported by modules that contain protocol- specific policy conditions and actions."; - oc-ext:openconfig-version "3.2.1"; + oc-ext:openconfig-version "3.2.2"; + + revision "2022-02-11" { + description + "Add PCEP to INSTALL_PROTOCOL_TYPES identity"; + reference "3.2.2"; + } revision "2021-12-10" { description @@ -239,4 +245,12 @@ module openconfig-policy-types { base INSTALL_PROTOCOL_TYPE; description "gRPC Routing Information Base Interface"; } + + identity PCEP { + base INSTALL_PROTOCOL_TYPE; + description + "Path Computation Element Communication Protocol"; + reference + "RFC 5440"; + } } From ba59c28efa68416cf954fcec65a476b3c3585356 Mon Sep 17 00:00:00 2001 From: mlaouane <59899549+mlaouane@users.noreply.github.com> Date: Wed, 13 Jul 2022 14:32:17 -0400 Subject: [PATCH 063/372] Modify ntp enabled description to reflect true and false case (#672) --- release/models/system/openconfig-system.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 6ecb071fa..61d6133dc 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -46,7 +46,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.13.0"; + oc-ext:openconfig-version "0.13.1"; + + revision "2022-07-12" { + description + "Modify ntp enabled description to reflect true and false case."; + reference "0.13.1"; + } revision "2021-07-20" { description @@ -847,7 +853,7 @@ module openconfig-system { type boolean; default false; description - "Enables the NTP protocol and indicates that the system should + "Enables and disables the NTP protocol and indicates that the system should attempt to synchronize the system clock with an NTP server from the servers defined in the 'ntp/server' list."; } From 3f7a5f9fc981948060caf609108192a8587d20d4 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Sun, 24 Jul 2022 21:10:03 -0700 Subject: [PATCH 064/372] Switchover ready (#667) * (M) release/models/platform/openconfig-platform.yang - Add boolean switchover-ready leaf Co-authored-by: Darren Loher --- .../platform/openconfig-platform-common.yang | 8 +++++++- .../models/platform/openconfig-platform.yang | 20 ++++++++++++++++++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 5ec510db8..5342641d2 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -19,7 +19,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.17.0"; + oc-ext:openconfig-version "0.18.0"; + + revision "2022-07-11" { + description + "Add switchover ready"; + reference "0.18.0"; + } revision "2022-06-10" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 8ff6831ea..e6c7ed22a 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.17.0"; + oc-ext:openconfig-version "0.18.0"; + + revision "2022-07-11" { + description + "Add switchover ready"; + reference "0.18.0"; + } revision "2022-06-10" { description @@ -504,6 +510,18 @@ module openconfig-platform { value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; } + + leaf switchover-ready { + type boolean; + description + "For components that have redundant roles, this reports a value + that indicates if the component is ready to support failover. + + The components with a redundant-role should reflect the overall + system's switchover status. For example, two supervisors in a + device, one as primary and the other as secondary, should both + report the same value."; + } } grouping platform-component-temp-alarm-state { From 2049164a8bca4cc9f11ffb313ef25c0e87303a24 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Sat, 30 Jul 2022 10:16:53 -0700 Subject: [PATCH 065/372] Implementation guidance for 'leafref' validation. (#543) * Implementation guidance for 'leafref' validation. * (A) docs/implementation-guidance/leafrefs-in-openconfig.md - This document provides a description of how leafrefs are suggested to be validated within an OpenConfig schema. This builds on implementation experience from multiple perspectives to make suggestions that balance computational expense and validity checks. * Address review comments. --- .../leafrefs-in-openconfig.md | 206 ++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 doc/implementation-guidance/leafrefs-in-openconfig.md diff --git a/doc/implementation-guidance/leafrefs-in-openconfig.md b/doc/implementation-guidance/leafrefs-in-openconfig.md new file mode 100644 index 000000000..06731b71c --- /dev/null +++ b/doc/implementation-guidance/leafrefs-in-openconfig.md @@ -0,0 +1,206 @@ +# Implementor Guidance: Leafrefs in OpenConfig/YANG + +**Authors**: Aaron Beitch, Justin Costa-Roberts, Rob Shakir + Arista Networks, Google +**Published:** September 2020 + +## Contents + + - [Summary](#summary) + - [Background](#background) + - [Why use a `leafref`?](#why-use-a-leafref) + - [Problems with Leafrefs](#problems-with-leafrefs) + - [Expense of Validation](#expense-of-validation) + - [Assumption of Complete and Consistent Data Tree](#assumption-of-complete-and-consistent-data-tree) + - [Inability to Wholly Describe Validity](#inability-to-wholly-describe-validity) + - [Relaxed Leafref Validation Requirements](#relaxed-leafref-validation-requirements) + +## Summary +The validation of leafrefs poses many problems for YANG clients and servers +alike - however, they continue to have value as a schema construct to provide +common type conformance, and foreign keys within the schema. This document +defines the expected validation behaviour of an OpenConfig-compliant +implementation - particularly, allowing an implementation to relax validation +rules such that referenced entities within the schema are not required to exist +at the time of validation (i.e., always act as though `require-instance false` +were set for a leafref node). + +## Background + +As defined in [section 9.9 of +RFC6020](https://tools.ietf.org/html/rfc6020#section-9.9), a leafref is a type +of YANG leaf. Each leafref has a path defined in a limited XPath syntax. This +path must evaluate to a leaf in the schema. The values for this leafref are +constrained by the type of the leaf referred to by the leafref. In addition, a +leafref’s value is constrained to be in the nodeset returned from executing its +path as an XPath expression. In YANG 1.1, but not in the original YANG +specification, this second constraint can be disabled by the module author with +a statement of “require-instance false;”. See [section 9.9.3 of RFC +7950](https://tools.ietf.org/html/rfc7950#section-9.9.3). The OpenConfig YANG +models do not currently support YANG 1.1. + +### Why use a `leafref`? + +We observe that there are multiple reasons that a YANG schema author may choose +to use a `leafref` within their module, particularly: + +1. To re-use a common type between two leaves. In this case, the author wishes + to define that the type of the `leaf` that they are defining has exactly the + same type as the type of the remote `leaf` that is selected by the `path` + specified. + * A common use case for such leafrefs within the OpenConfig schema is for + list keys, where there is an alias to the authoratitive source of a list + key (under a `config` or `state` container) directly under the `list` structure + itself, to comply with the YANG requirements. +2. To provide a foreign-key within one part of the schema to another schema + element. The common use case for such leaves is to allow the schema to be + normalized, and to allow programmatic means of traversing the schema (e.g., + automatically retrieving data that corresponds to such `leafref` references, + without needing to write schema-path specific handling code). + * For example, defining a `leafref` with the path + `/interfaces/interface/config/name` provides a client a means to know that + more definition of the referenced interface can be found at the corresponding + schema path - and for a helper-library for a client querying such a leafref to + automatically also retrieve the corresponding `/interfaces/interface` list + entry. +3. To ensure consistency within a schema. In this case, the `leafref` is used + to ensure that an entity that is referenced within a particular part of a + schema actually exists within the schema. + * For example, the list of interfaces with a particular protocol (say, + IS-IS) enabled on them must reference an interface that is actually + configured on the system. The leafref ensures that if IS-IS is enabled on + `Ethernet423` such an interface actually exists on the local system. + +Both 1 and 2 within the list are essentially schema-time definitions, they are +either convenying type information, or static information that relates to +characteristics (in this case, relationships between parts) of the schema tree. + +The third case is somewhat different - it conveys characteristics of the data +tree through the leafref. We observe that implementing validation of such cases +requires additional consideration. + +## Problems with Leafrefs + +### Expense of Validation +Unlike most constraints in YANG, leafref constraint validation depends on more +than just the value in the node containing the leafref: it also depends on the +value of the nodes indicated by the path of the leafref. This means that a +modification to any node may invalidate a leafref node in any other part of the +tree. Validating a data tree after any node modification therefore requires +either re-examining the entire data tree or implementing complex bookkeeping +linking nodes to the leafref nodes that are constrained by them. + +In our implementation experience, detecting populated `leafref` leaves, and +performing data tree lookups to prove their validity is the dominant +computational expense during YANG tree validation. This complexity also +affects the clients interacting with an OpenConfig implementation. Crafting a +valid Set operation requires knowledge of the leafrefs anywhere in the +OpenConfig models. + +### Assumption of Complete and Consistent Data Tree + +Leafrefs for validation assume a complete and consistent data tree is available +at the time of validation. In practice there are numerous deployments where +this constraint is not met: + + * During data tree synchronisation -- a natural way to synchronize two data + trees (for instance, from a target device to a management system, or from a + NOS’s native data into an OpenConfig tree) is to subscribe to updates from a + source tree and apply them to the destination tree. If the destination must + validate leafrefs, then either updates from the source tree must be composed + into valid updates to apply to the target, or the source must only issue + updates that satisfy the constraints imposed by leafrefs on any nodes contained + in the update. In general, without support from the source, the former is not + possible. If the source system does not provide such a capability, the + destination tree must bypass leafref validation or implement complex systems + for hiding the fact that some leafref leaves are temporarily invalid. In this + model, assuming the source tree is valid at all times, the destination tree + will also become valid, but may have periods where it is not. + * Within modular configuration-generation systems -- in some cases, the + configuration of a network element may not be generated by a single process. + Individual handlers (e.g., a BGP session generator) may generate a part of the + configuration, which has external references. At this point in time, the + partial configuration is not available to be validated, however, it is still of + interest whether the leaves that were defined are valid. In this case, the + toolchain must provide means to be able to skip validation, as described above. + * In mixed-schema configuration systems -- in today's network elements, there + are typically multiple schemas available for configuration - legacy CLI, a + vendor's native models, OpenConfig etc., with varying levels of support. We do + not expect that leafrefs exist across these schemas, such that any entity that + is handling a mixed-schema configuration must also provide means to bypass + validation of leafrefs. + * During pre-configuration within a NOS -- some network elements may wish to + allow preconfiguration of a particular entity. For example, a client may be + allowed to reference a particular target interface before it is configured. To + support such behaviour, target implementations must provide some means to be + able to disable leafref validation for a particular client operation if it is + enabled by default. + * In split RO vs. RW systems -- some system architectures split the collection + of state data ('telemetry') from the storage of configuration data. Some + systems may not therefore have visibility into both the 'intended' + configuration as well as the 'applied' and 'derived' states of the system. + In such systems, any leafref that is from a `config false` to a `config + true` path in the data-tree will not resolve, and hence leafrefs between + these views of the data tree cannot be validated. + +To this end, in our experience the choice of *when* the existence of a +leafref's target can be validated, and *which* leafrefs should be expected to +have valid targets is wholly dependent upon the context of the consuming system +-- rather than a generic property of a YANG schema. + +### Inability to Wholly Describe Validity +Whilst the constraint that a particular referenced entity must exist on the +system is a useful validity constraint, it is generally insufficient to +describe the actual validity of the configuration. For example, if an interface +is to be included within a VRF, it is very likely to need to be defined, but it +likely also needs to be specified in a mode that means that it is compatible +with L3 routing - among a host of other constraints. In practice, therefore, +the mere existence of the interface is insufficient to describe validity. + +To overcome this scenario `when` and `must` statements could be added to the +schema. However, there are multiple concerns with doing so: + + * It incurrs the same expense as is described in _Expense of Validation_ above + on the server to ensure validity. + * The choice of XPATH to describe these constraints means that toolchains must + now handle a complex additional query language, and authors must craft such + queries. + * Both `when` and `must` statements have the same expectation of consistency + that is described in _Assumption of a Complete and Consistent Data Tree_. + +Use of `when`, `must` and `leafref` to indicate an instance is required are +somewhat outside the general scope of a data modelling language. For example, +protobuf, JSON schema, and thrift do not provide means to describe such +constraints. Use of these constraints in YANG implies an additional level of +complexity for the supporting toolchain, over and above that which is required +for other languages. + +In our implementation experience, in order to simplify the overall developer +experience and system architecture surrounding YANG modelled data, it is +significantly simpler to keep such constraints (if enforced) outside of the +data model specification. + +## Relaxed Leafref Validation Requirements + +By default, a server supporting OpenConfig: + + * SHOULD validate types for leaves of type `leafref`, along with any + restrictions (e.g., `pattern` or `range` statemenets) described with those + types. + * SHOULD NOT validate the existence of the leaf that is pointed to by the + leafref `path` by default. This behaviour MUST be explicitly enabled if + required, and MAY be unsupported by a target. This guidance essentially treats + all leafrefs within the schema as `require-instance false`. + +Authors of OpenConfig models: + + * SHOULD continue to use `leafref` where references between parts of the + schema are required. + +System implementors: + + * MUST make their systems explicitly check references if they are required for + their application. + * MAY choose to implement mechanisms such as only validating the existence of + leafref targets within a subset of the schema tree to overcome some of the + issues described in this application note. From aeaf85ee5662f01420a623d0d5a306a2185b9b4b Mon Sep 17 00:00:00 2001 From: rsgcp <70720834+rsgcp@users.noreply.github.com> Date: Fri, 12 Aug 2022 15:36:57 -0700 Subject: [PATCH 066/372] Add routing-mac-address leaf to the system model. (#632) * Added mac-addr hierarchy with routing-mac-addr config. Co-authored-by: Rob Shakir Co-authored-by: Darren Loher --- release/models/system/openconfig-system.yang | 55 +++++++++++++++++++- 1 file changed, 54 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 61d6133dc..526b2ad45 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -46,7 +46,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.13.1"; + oc-ext:openconfig-version "0.14.0"; + + revision "2022-07-20" { + description + "Added routing-mac system MAC address."; + reference "0.14.0"; + } revision "2022-07-12" { description @@ -914,6 +920,52 @@ module openconfig-system { } } + grouping system-routing-macaddr-config { + description + "Configuration data for system's routing MAC addresses."; + + leaf routing-mac { + type oc-yang:mac-address; + description + "Any packets destined to this MAC address must be sent through the + routing pipeline by the system. This MAC address is used to identify + routed packets in addition to any other MAC addresses that the system + may already have been using to perform routing. + + It is not expected that this MAC address will be used as the + source MAC address of any routed packet, as the source MAC address of + any packets generated by the system, or a MAC address used in ARP + response. This MAC address may not be allocated from the block of + MAC address that system owns. For instance, it's allocation could + be managed by an external controller."; + } + } + + grouping system-macaddr-top { + description + "Top-level grouping for configuration and state of system's MAC addresses."; + + container mac-address { + description + "Top-level container for system's MAC address configuration and state"; + + container config { + description + "Configuration data for routing MAC address."; + + uses system-routing-macaddr-config; + } + + container state { + config false; + description + "Operational state data for routing MAC address."; + + uses system-routing-macaddr-config; + } + } + } + grouping system-memory-config { description "Configuration data for system memory"; @@ -1165,6 +1217,7 @@ module openconfig-system { uses oc-alarms:alarms-top; uses oc-messages:messages-top; uses oc-license:license-top; + uses system-macaddr-top; } } From 76f77b566449af43f941f6dd3b0e42fddaadacc6 Mon Sep 17 00:00:00 2001 From: Dake Xiao <12538993+itbwtw@users.noreply.github.com> Date: Thu, 18 Aug 2022 13:03:17 -0700 Subject: [PATCH 067/372] Add power-admin-state for fabrics and supervisors (#623) * add power-admin-state for fabric & controller-card * remove the use of oc-ext:regexp-posix * define grouping for power management extract leaf power-admin-state out into its own grouping, so that it can be re-used in 3 modules: openconfig-platform-linecard, openconfig-platform-fabric and openconfig-platform-controller-card * move component-power-management definition to openconfig-platform-common.yang * update controller card description to reject powering off primary supervisor --- release/models/platform/.spec.yml | 4 + .../platform/openconfig-platform-common.yang | 21 ++++- .../openconfig-platform-controller-card.yang | 81 +++++++++++++++++++ .../platform/openconfig-platform-fabric.yang | 81 +++++++++++++++++++ .../openconfig-platform-linecard.yang | 17 ++-- .../platform/openconfig-platform-types.yang | 8 +- .../models/platform/openconfig-platform.yang | 27 ++++++- 7 files changed, 228 insertions(+), 11 deletions(-) create mode 100644 release/models/platform/openconfig-platform-controller-card.yang create mode 100644 release/models/platform/openconfig-platform-fabric.yang diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index adf39868d..74b236942 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -11,8 +11,10 @@ - yang/platform/openconfig-platform-cpu.yang - yang/platform/openconfig-platform-ext.yang - yang/platform/openconfig-platform-software.yang + - yang/platform/openconfig-platform-fabric.yang - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang + - yang/platform/openconfig-platform-controller-card.yang build: - yang/platform/openconfig-platform.yang - yang/platform/openconfig-platform-common.yang @@ -24,6 +26,8 @@ - yang/platform/openconfig-platform-ext.yang - yang/platform/openconfig-platform-cpu.yang - yang/platform/openconfig-platform-software.yang + - yang/platform/openconfig-platform-fabric.yang - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang + - yang/platform/openconfig-platform-controller-card.yang run-ci: true diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 5342641d2..8cfbb01b7 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -6,6 +6,7 @@ submodule openconfig-platform-common { prefix "oc-platform"; } + import openconfig-platform-types { prefix oc-platform-types; } import openconfig-extensions { prefix oc-ext; } import openconfig-types { prefix oc-types; } @@ -19,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.18.0"; + oc-ext:openconfig-version "0.19.0"; + + revision "2022-07-28" { + description + "Add grouping for component power management"; + reference "0.19.0"; + } revision "2022-07-11" { description @@ -149,6 +156,18 @@ submodule openconfig-platform-common { } } + grouping component-power-management { + description + "Common grouping for managing component power"; + + leaf power-admin-state { + type oc-platform-types:component-power-type; + default POWER_ENABLED; + description + "Enable or disable power to the component"; + } + } + // data definition statements // augment statements diff --git a/release/models/platform/openconfig-platform-controller-card.yang b/release/models/platform/openconfig-platform-controller-card.yang new file mode 100644 index 000000000..1bea20fe3 --- /dev/null +++ b/release/models/platform/openconfig-platform-controller-card.yang @@ -0,0 +1,81 @@ +module openconfig-platform-controller-card { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/controller-card"; + + prefix "oc-ctrl-card"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to CONTROLLER_CARD components in + the openconfig-platform model"; + + oc-ext:openconfig-version "0.1.0"; + + revision "2022-07-28" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping controller-card-config { + description + "Configuration data for controller card components"; + + uses oc-platform:component-power-management; + } + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:controller-card/oc-platform:config" { + description + "Adding controller card data to physical inventory. This subtree + is only valid when the type of the component is CONTROLLER_CARD."; + + uses controller-card-config; + } + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:controller-card/oc-platform:state" { + description + "Adding controller card data to physical inventory. This subtree + is only valid when the type of the component is CONTROLLER_CARD."; + + uses controller-card-config; + } + + // rpc statements + + // notification statements + +} + diff --git a/release/models/platform/openconfig-platform-fabric.yang b/release/models/platform/openconfig-platform-fabric.yang new file mode 100644 index 000000000..95d106cf6 --- /dev/null +++ b/release/models/platform/openconfig-platform-fabric.yang @@ -0,0 +1,81 @@ +module openconfig-platform-fabric { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/fabric"; + + prefix "oc-fabric"; + + import openconfig-platform { prefix oc-platform; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines data related to FABRIC components in + the openconfig-platform model"; + + oc-ext:openconfig-version "0.1.0"; + + revision "2022-07-28" { + description + "Initial revision"; + reference "0.1.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + // grouping statements + + grouping fabric-config { + description + "Configuration data for fabric components"; + + uses oc-platform:component-power-management; + } + + // data definition statements + + // augment statements + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:fabric/oc-platform:config" { + description + "Adding fabric data to physical inventory. This subtree + is only valid when the type of the component is FABRIC."; + + uses fabric-config; + } + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:fabric/oc-platform:state" { + description + "Adding fabric data to physical inventory. This subtree + is only valid when the type of the component is FABRIC."; + + uses fabric-config; + } + + // rpc statements + + // notification statements + +} + diff --git a/release/models/platform/openconfig-platform-linecard.yang b/release/models/platform/openconfig-platform-linecard.yang index 1932588b9..8ac1cfbcd 100644 --- a/release/models/platform/openconfig-platform-linecard.yang +++ b/release/models/platform/openconfig-platform-linecard.yang @@ -8,7 +8,6 @@ module openconfig-platform-linecard { prefix "oc-linecard"; import openconfig-platform { prefix oc-platform; } - import openconfig-platform-types { prefix oc-platform-types; } import openconfig-extensions { prefix oc-ext; } @@ -23,7 +22,14 @@ module openconfig-platform-linecard { "This module defines data related to LINECARD components in the openconfig-platform model"; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-07-28" { + description + "Remove leaf power-admin-state and use a common definition + instead."; + reference "1.0.0"; + } revision "2022-04-21" { description @@ -69,12 +75,7 @@ module openconfig-platform-linecard { description "Configuration data for linecard components"; - leaf power-admin-state { - type oc-platform-types:component-power-type; - default POWER_ENABLED; - description - "Enable or disable power to the linecard"; - } + uses oc-platform:component-power-management; } grouping linecard-state { diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index 30cd475a7..970a9cebb 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.5.0"; + + revision "2022-07-28" { + description + "Add grouping for component power management"; + reference "1.5.0"; + } revision "2022-03-27" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index e6c7ed22a..69bbf5ae3 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.18.0"; + oc-ext:openconfig-version "0.19.0"; + + revision "2022-07-28" { + description + "Add container for controller card component"; + reference "0.19.0"; + } revision "2022-07-11" { description @@ -1064,6 +1070,25 @@ module openconfig-platform { "Operational state data for software module components"; } } + + container controller-card { + description + "Data for controller card components, i.e., for components + with type=CONTROLLER_CARD"; + + container config { + description + "Configuration data for controller card components. Note that disabling + power to the primary supervisor should be rejected, and the operator is + required to perform a switchover first."; + } + + container state { + config false; + description + "Operational state data for controller card components"; + } + } } grouping platform-component-top { From ddfeaf5deb4c195b32287dc2e6d48034faa19473 Mon Sep 17 00:00:00 2001 From: aredmon8551 <87078055+aredmon8551@users.noreply.github.com> Date: Thu, 1 Sep 2022 12:57:55 -0400 Subject: [PATCH 068/372] * (M) release/models/system/system-aaa.yang (#687) * (M) release/models/system/system-aaa-radius.yang * (M) release/models/system/system-aaa-tacacs.yang - Update role to be mandatory attribute of user configuration This is to address the undefined behavior when a system user is created but no role is specified. Implementations vary in their behavior here - proposal is to make role a mandatory attribute. --- release/models/system/openconfig-aaa-radius.yang | 8 +++++++- release/models/system/openconfig-aaa-tacacs.yang | 8 +++++++- release/models/system/openconfig-aaa.yang | 15 +++++++++++---- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/release/models/system/openconfig-aaa-radius.yang b/release/models/system/openconfig-aaa-radius.yang index 34449292a..7b1930df8 100644 --- a/release/models/system/openconfig-aaa-radius.yang +++ b/release/models/system/openconfig-aaa-radius.yang @@ -26,7 +26,13 @@ submodule openconfig-aaa-radius { related to the RADIUS protocol for authentication, authorization, and accounting."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-07-29" { + description + "Update user role to be mandatory."; + reference "1.0.0"; + } revision "2020-07-30" { description diff --git a/release/models/system/openconfig-aaa-tacacs.yang b/release/models/system/openconfig-aaa-tacacs.yang index 1b8bf88e8..d96bc0f07 100644 --- a/release/models/system/openconfig-aaa-tacacs.yang +++ b/release/models/system/openconfig-aaa-tacacs.yang @@ -25,7 +25,13 @@ submodule openconfig-aaa-tacacs { related to the TACACS+ protocol for authentication, authorization, and accounting."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-07-29" { + description + "Update user role to be mandatory."; + reference "1.0.0"; + } revision "2020-07-30" { description diff --git a/release/models/system/openconfig-aaa.yang b/release/models/system/openconfig-aaa.yang index d7c529c09..274c97e81 100644 --- a/release/models/system/openconfig-aaa.yang +++ b/release/models/system/openconfig-aaa.yang @@ -32,7 +32,13 @@ module openconfig-aaa { Portions of this model reuse data definitions or structure from RFC 7317 - A YANG Data Model for System Management"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-07-29" { + description + "Update user role to be mandatory."; + reference "1.0.0"; + } revision "2020-07-30" { description @@ -396,10 +402,11 @@ module openconfig-aaa { base oc-aaa-types:SYSTEM_DEFINED_ROLES; } } + mandatory true; description - "Role assigned to the user. The role may be supplied - as a string or a role defined by the SYSTEM_DEFINED_ROLES - identity."; + "Role assigned to the user. The role must be supplied + as a role defined by the SYSTEM_DEFINED_ROLES + identity or a string that matches a user defined role."; } } From 105df496a5031daafc3594499f7b32bda0cc2327 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Fri, 2 Sep 2022 13:06:05 -0700 Subject: [PATCH 069/372] clei code round 2 (#701) Co-authored-by: Eric Breverman --- .../platform/openconfig-platform-common.yang | 8 +++++++- release/models/platform/openconfig-platform.yang | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 8cfbb01b7..1ffa20063 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.19.0"; + oc-ext:openconfig-version "0.20.0"; + + revision "2022-08-31" { + description + "Add new state data for component CLEI code."; + reference "0.20.0"; + } revision "2022-07-28" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 69bbf5ae3..cc2697f65 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.19.0"; + oc-ext:openconfig-version "0.20.0"; + + revision "2022-08-31" { + description + "Add new state data for component CLEI code."; + reference "0.20.0"; + } revision "2022-07-28" { description @@ -432,6 +438,14 @@ module openconfig-platform { (field replaceable unit)"; } + leaf clei-code { + type string; + description + "Common Language Equipment Identifier (CLEI) code of the + component. This should be present in particular if the + component is also an FRU (field replaceable unit)"; + } + leaf removable { type boolean; description From 7ca380c227612e6a27bf8fb8c1c1a02a9fc081f6 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 2 Sep 2022 18:10:48 -0700 Subject: [PATCH 070/372] Add p4RT id to component/chassis/ (#625) * (M) release/models/p4rt/openconfig-p4rt.yang add p4rt id for chassis --- release/models/p4rt/openconfig-p4rt.yang | 71 ++++++++++++++++++++---- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/release/models/p4rt/openconfig-p4rt.yang b/release/models/p4rt/openconfig-p4rt.yang index 722129509..c6f615445 100644 --- a/release/models/p4rt/openconfig-p4rt.yang +++ b/release/models/p4rt/openconfig-p4rt.yang @@ -26,7 +26,13 @@ module openconfig-p4rt { The P4RT protocol specification is linked from https://p4.org/specs/ under the P4Runtime heading."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.4.0"; + + revision 2022-08-19 { + description + "Add chassis grouping and chassis-id"; + reference "0.4.0"; + } revision 2022-06-08 { description @@ -47,12 +53,20 @@ module openconfig-p4rt { reference "0.1.0"; } + // extension statements + + // feature statements + + // identity statements + identity P4RT { base "oc-grpc:GRPC_SERVICE"; description "P4RT: P4 Runtime (P4RT) Service."; } + // grouping statements + grouping p4rt-interface-config { description "Interface-specific configuration that is applicable to devices that @@ -90,18 +104,16 @@ module openconfig-p4rt { } } - augment "/oc-if:interfaces/oc-if:interface/oc-if:config" { - description - "Add interface-specific intended configuration for P4RT."; - - uses p4rt-interface-config; - } - - augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { + grouping p4rt-chassis-config { description - "Add interface-specific applied configuration for P4RT."; + "Config regarding P4RT use cases which corresponds to the global device hardware package"; - uses p4rt-interface-config; + leaf id { + type uint32; + description + "An identifier used for the root of oc-p4rt:node-id. It is used to + indicate which oc-p4rt:node-id's belong to the same device"; + } } grouping p4rt-ic-config { @@ -128,6 +140,24 @@ module openconfig-p4rt { https://p4.org/p4-spec/p4runtime/main/P4Runtime-Spec.html#sec-write-rpc"; } + // data definition statements + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface/oc-if:config" { + description + "Add interface-specific intended configuration for P4RT."; + + uses p4rt-interface-config; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:state" { + description + "Add interface-specific applied configuration for P4RT."; + + uses p4rt-interface-config; + } + augment "/oc-platform:components/oc-platform:component/" + "oc-platform:integrated-circuit/oc-platform:config" { description @@ -145,4 +175,23 @@ module openconfig-p4rt { uses p4rt-ic-config; } + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:chassis/oc-platform:config" { + description + "Add P4RT chassis config to platform chassis component."; + uses p4rt-chassis-config; + } + + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:chassis/oc-platform:state" { + description + "Add P4RT chassis state to platform chassis component."; + uses p4rt-chassis-config; + } + } + + // rpc statements + + // notification statements From d4a4e8abcd476e57e7601ec4bc98a1e3ac2bde1b Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 12 Sep 2022 16:15:50 -0700 Subject: [PATCH 071/372] Add next-hop-group/next-hop-group-network-instance to network-instance's spec files (#704) * Add next-hop-group/next-hop-group-network-instance to network-instance's spec files --- release/models/network-instance/.spec.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 9c72f78a4..efc32de67 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -4,8 +4,10 @@ - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang + - yang/aft/openconfig-aft-network-instance.yang build: - yang/network-instance/openconfig-network-instance.yang + - yang/aft/openconfig-aft-network-instance.yang run-ci: true - name: openconfig-network-instance-bgp-rib-augment build: From d79a9ac54dbc5f5d4beb68522fb3aee8b0b2c921 Mon Sep 17 00:00:00 2001 From: Travis Burrows <37048572+tjburrows@users.noreply.github.com> Date: Tue, 13 Sep 2022 15:04:16 -0400 Subject: [PATCH 072/372] Add software-version leaf to system/state. (#676) * (M) release/models/system/openconfig-system.yang - Add openconfig/system/state/software-version --- release/models/system/openconfig-system.yang | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 526b2ad45..84ac2b301 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -46,7 +46,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.14.0"; + oc-ext:openconfig-version "0.15.0"; + + revision "2022-07-25" { + description + "Add system software version."; + reference "0.15.0"; + } revision "2022-07-20" { description @@ -347,6 +353,15 @@ module openconfig-system { restarted. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; } + + leaf software-version { + type string; + description + "Operating system version of the currently active controller + of the device. It is required that this value matches the + value of the state/software-version leaf in the component + of type OPERATING_SYSTEM."; + } } grouping mount-points-top { From dda7316fdc3ef2fd910a64f9555c6eec9b376625 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 15 Sep 2022 08:36:27 -0700 Subject: [PATCH 073/372] Rename contributions guide, update doc, PR template. (#689) * Rename contributions guide, update doc, PR template. * (A) CONTRIBUTING.md - Add a top-level contributing document that links to the wider document discussion. * (R) doc/external-contributions-guide.md -> doc/contributions-guide.md - Rename contributions guide based on `openconfig/public` being the primary SOT for models. * (A) .github/pull_request_template.md - Establish a template for new PRs to the `openconfig/public` repo. Co-authored-by: Darren Loher --- .github/pull_request_template.md | 23 ++++++++++ CONTRIBUTING.md | 4 ++ ...utions-guide.md => contributions-guide.md} | 46 ++++++++----------- 3 files changed, 47 insertions(+), 26 deletions(-) create mode 100644 .github/pull_request_template.md create mode 100644 CONTRIBUTING.md rename doc/{external-contributions-guide.md => contributions-guide.md} (78%) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 000000000..acbb7b9ca --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,23 @@ +[Note: Please fill out the following template for your pull request. lines +tagged with "Note" can be removed from the template.] + +[Note: Before this PR can be reviewed please agree to the CLA covering this +repo. Please also review the contribution guide - +https://github.com/openconfig/public/blob/master/doc/external-contributions-guide.md] + +### Change Scope + +* [Please briefly describe the change that is being made to the models.] +* [Please indicate whether this change is backwards compatible.] +### Platform Implementations + + * Implementation A: [link to documentation](http://foo.com) and/or + implementation output. + * Implementation B: [link to documentation](http://foo.com) and/or + implementation output. + +[Note: Please provide at least two references to implementations which are relevant to the model changes proposed. Each implementation should be from separate organizations.]. + +[Note: If the feature being proposed is new - and something that is being +proposed as an enhancement to device functionality, it is sufficient to have +reviewers from the producers of two different implementations]. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 000000000..e371839a0 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,4 @@ +# Contributing to OpenConfig + +Please see the [contributions +guide](https://github.com/openconfig/public/blob/master/doc/contributions-guide.md). diff --git a/doc/external-contributions-guide.md b/doc/contributions-guide.md similarity index 78% rename from doc/external-contributions-guide.md rename to doc/contributions-guide.md index b9a4b4ee9..0d4f7e216 100644 --- a/doc/external-contributions-guide.md +++ b/doc/contributions-guide.md @@ -1,7 +1,8 @@ -# External Submissions to OpenConfig +# Contributions to OpenConfig *Contributors*: robjs, aashaikh, chris_luke † @google.com, ⸸ @comcast.com -May 2018 +Created: May 2018 +Updated: August 2022 ## Rationale As the OpenConfig project matures and is adopted by implementors and network @@ -33,12 +34,12 @@ The process for making a contribution is outlined below. OpenConfig prefers code (i.e., YANG) contributions, rather than feature requests. If you wish to discuss the suitability or approach for a change, or addition to the models, this can be done with an issue in the [OpenConfig -public GitHub](https://github.com/openconfig/public/issues). +public GitHub](https://github.com/openconfig/public/issues). All contributions to OpenConfig MUST be Apache 2.0 licensed. A contributor license agreement (CLA), namely the [Google CLA](https://cla.developers.google.com/), MUST be signed for any contribution -to be accepted. +to be accepted. The CLA is used to ensure that the rights to use the contribution are well understood by the OpenConfig working group, and consumers of the OpenConfig @@ -54,9 +55,10 @@ ascribe any specific rights to a single OpenConfig member. To make a contribution to OpenConfig: 1. Open a pull request in the - [openconfig/public](https://github.com/openconfig/public) repo. A brief - description of the proposed addition along with references to any discussion - issues should be included. + [openconfig/public](https://github.com/openconfig/public) repo. The pull + request template for the repository details the information that is expected, + please fill it out, along with any additional information that is useful for + reviewers. In addition: * Pull requests should be kept small. An ideal change is less than 500 lines of YANG. Small changes allow detailed discussions of the additions that are being made to the model, whilst also ensuring that course-corrections can be @@ -66,10 +68,13 @@ To make a contribution to OpenConfig: likely an issue should have been created to discuss the addition prior to code review. * When the pull request adds a new feature that is supported across vendors, - best practice is to include links to public-facing documentation showing + the author must include links to public-facing documentation showing the implementation of the feature within the change description. This simplifies the process of reviewing differences and the chosen abstractions (if any are used). + * Pull requests should update the versions of the modified models with a new + semantic version, the rules followed for this versioning are described in + [this document](https://openconfig.net/docs/semver/). 1. The pull request should include both the suggested YANG additions, as well as any relevant changes to the `.spec.yml` files that are included within the @@ -90,28 +95,17 @@ To make a contribution to OpenConfig: available YANG toolchains, in order to detect regression issues that may occur due to OpenConfig model changes. -1. A member of the OpenConfig operator working group will be assigned as a - shepherd for the pull request. The shepherd will act as a liasion between the - author(s) of the PR and the OpenConfig group - particularly, they will perform - an initial review of the submission, provide feedback from the wider operator - group on the PR, or directly interact with the authors to iterate on the - proposal. The working group meets weekly and, in some cases, may ask the - authors to join this meeting for a discussion of the changes. +1. Discussion of the PR is carried out in the `openconfig/public` repository - + in order to ensure that different viewpoints can be considered from the + community. Real-time discussions (either scheduled or ad-hoc) can be arranged + where needed. -1. When the model changes are approved. The pull request will not be directly - merged in the public repository, but merged in a private development repo. - Members of the OpenConfig group have access to the private repo, and may make - subsequent changes to the accepted pull request. Merged changes will be - upstreamed from the private repo to - [openconfig/public](https://github.com/openconfig/public) periodically. This - helps keep the release history well defined within the public repository, and - to maintain consistency over changes that require major revision number - changes. +1. When the model changes are approved. The pull request will be + merged in the public repository. The aim of this process is not to restrict contributions to OpenConfig, but simply to maintain the model quality and approach that the working group has strived for since its inception in 2014. Questions prior to making submissions are welcome, please use the [netopenconfig Google group](mailto:netopenconfig@googlegroups.com), or the [public repository -issues](https://github.com/openconfig/public/issues). - +issues](https://github.com/openconfig/public/issues). From b216b54a2036cea96c91a8ea288e665362179d5b Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Thu, 15 Sep 2022 16:44:32 -0700 Subject: [PATCH 074/372] Update README.md (#709) * (M) README/md - Fix the link to `External Submissions to OpenConfig`, renamed in #689 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ae755767..236c7d979 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ This repository is primarily for publishing the models, documents, and other material developed by the OpenConfig operators group. For information about how to contribute to OpenConfig models, please -see [External Submissions to OpenConfig](doc/external-contributions-guide.md). +see [External Submissions to OpenConfig](doc/contributions-guide.md). Feedback and suggestions to improve OpenConfig models is welcomed on the [public mailing list](https://groups.google.com/forum/?hl=en#!forum/netopenconfig), From 103538c4a2766cd210e123b84f562be14d54ea68 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 20 Sep 2022 18:16:35 -0700 Subject: [PATCH 075/372] Add option for fallback between VRFs. (#520) * Add option for fallback between VRFs. * (M) release/models/network-instance/openconfig-network-instance-l3.yang - Add a configuration option to allow for a lookup in a subsequent network-instance should the network-instance specified not have a matching route. --- .../openconfig-network-instance-l2.yang | 8 +++++++- .../openconfig-network-instance-l3.yang | 8 +++++++- .../openconfig-network-instance.yang | 19 ++++++++++++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 68ccc20a0..592024e9a 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2022-09-15" { + description + "Add fallback-vrf option."; + reference "1.4.0"; + } revision "2022-07-04" { description diff --git a/release/models/network-instance/openconfig-network-instance-l3.yang b/release/models/network-instance/openconfig-network-instance-l3.yang index 742f9002f..58131e373 100644 --- a/release/models/network-instance/openconfig-network-instance-l3.yang +++ b/release/models/network-instance/openconfig-network-instance-l3.yang @@ -23,7 +23,13 @@ module openconfig-network-instance-l3 { Layer 3 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "0.11.1"; + oc-ext:openconfig-version "1.0.0"; + + revision "2022-09-15" { + description + "Reflect implementation status by releasing 1.0.0."; + reference "1.0.0"; + } revision "2018-11-21" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 29795f39b..3b4bc53a8 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2022-09-15" { + description + "Add fallback-vrf option."; + reference "1.4.0"; + } revision "2022-07-04" { description @@ -1229,6 +1235,17 @@ module openconfig-network-instance { "The route distinguisher that should be used for the local VRF or VSI instance when it is signalled via BGP."; } + + leaf fallback-network-instance { + type network-instance-ref; + description + "When this leaf is populated, the specified network instance + should be used as a fallback instance when a route cannot + be resolved in the local network-instance. + This configuration is only valid when specified in a non-default + instance which must be a L3 capable VRF (i.e., L2L3, or L3VRF)."; + when "../type = 'oc-ni-types:L3VRF'"; + } } grouping network-instance-state { From 7c21c6ef036cd99b067a68ba3618cb6119b8fda0 Mon Sep 17 00:00:00 2001 From: ChrisF Date: Wed, 28 Sep 2022 19:57:36 -0400 Subject: [PATCH 076/372] Add dropped-octets to openconfig-qos-interfaces. Removed vlan part of request. (#620) * Update openconfig-vlan.yang Removed placeholders in "vlan-state" and "vlan-tpid-state" with the associated leaves. Adding dropped-octets to be complete and consistent * Update openconfig-qos-interfaces.yang * Update parent QoS module revision Co-authored-by: Chris Luke --- release/models/qos/openconfig-qos-elements.yang | 8 +++++++- release/models/qos/openconfig-qos-interfaces.yang | 14 +++++++++++++- release/models/qos/openconfig-qos-mem-mgmt.yang | 8 +++++++- release/models/qos/openconfig-qos.yang | 8 +++++++- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index e21eb127f..9e90dec12 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2022-09-13" { + description + "Add queue octet drop counter."; + reference "0.6.0"; + } revision "2021-08-28" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 1adde5e74..d1bb820d1 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2022-09-13" { + description + "Add queue octet drop counter."; + reference "0.6.0"; + } revision "2021-08-28" { description @@ -321,6 +327,12 @@ submodule openconfig-qos-interfaces { description "Number of packets dropped by the queue due to overrun"; } + + leaf dropped-octets { + type oc-yang:counter64; + description + "Number of octets dropped by the queue due to overrun"; + } } grouping qos-interface-queue-top { diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 63ca758fa..b67e486f7 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2022-09-13" { + description + "Add queue octet drop counter."; + reference "0.6.0"; + } revision "2021-08-28" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 9f9b5f498..2dd1aa421 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2022-09-13" { + description + "Add queue octet drop counter."; + reference "0.6.0"; + } revision "2021-08-28" { description From 95948a506f12c904e7414e7d9cc27c467bee9070 Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Fri, 30 Sep 2022 09:15:59 -0700 Subject: [PATCH 077/372] [WiFi] Update channel utilization leafs (#707) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Introduce obss-rx leaf and clarify verbiage Introduces obss-rx leaf to account for overlapping bss frames and clarifies verbiage on received channel utilization. --- release/models/wifi/openconfig-wifi-phy.yang | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index fac644c77..86479eb34 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2022-09-16" { + description + "Adds obss-rx and clarifies language on rx-dot11-channel-utilization."; + reference "1.2.0"; + } revision "2022-03-24" { description @@ -306,13 +312,14 @@ module openconfig-wifi-phy { Radio. The total channel utilization should include all time periods the AP spent actively receiving and transmitting 802.11 frames, and also include all time spent with clear - channel assessment (CCA) in a busy state"; + channel assessment (CCA) in a busy state."; } leaf rx-dot11-channel-utilization { type oc-types:percentage; description - "Received channel-utilization due to 802.11 frames"; + "Received channel-utilization due to any 802.11 frames, destined to this + radio or otherwise."; } leaf rx-noise-channel-utilization { @@ -326,6 +333,13 @@ module openconfig-wifi-phy { description "Transmit channel-utilization percentage."; } + + leaf obss-rx { + type oc-types:percentage; + description + "Received channel utilization due to 802.11 frames NOT destined to a + BSS on this AP ('Overlapping BSS')"; + } } grouping radio-counters-state { From f3f05d5f6e38ca7c46671ea5a4c11b62d264c10b Mon Sep 17 00:00:00 2001 From: Leon Wang Date: Tue, 11 Oct 2022 21:51:32 -0700 Subject: [PATCH 078/372] Add support for SFP28 and SFP56 form factor identities (#692) SFP28 and SFP56 transceiver form factor identities are missing from OpenConfig. --- .../openconfig-transport-types.yang | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index af584c509..474844818 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.15.0"; + oc-ext:openconfig-version "0.16.0"; + + revision "2022-09-26" { + description + "Add SFP28 and SFP56 form factor identities."; + reference "0.16.0"; + } revision "2021-07-29" { description @@ -829,6 +835,20 @@ module openconfig-transport-types { up to 16 Gb/s signals, including 10 GbE and OTU2"; } + identity SFP28 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Small form-factor pluggable transceiver supporting up to + 25 Gb/s signal"; + } + + identity SFP56 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Small form-factor pluggable transceiver supporting up to + 50 Gb/s signal"; + } + identity XFP { base TRANSCEIVER_FORM_FACTOR_TYPE; description From e02903b522730d8b52ab70c1f6916708aef672f1 Mon Sep 17 00:00:00 2001 From: hariramnat <96590054+hariramnat@users.noreply.github.com> Date: Wed, 19 Oct 2022 12:57:29 -0700 Subject: [PATCH 079/372] Add csnp-enable-on-p2p-links leaf to IS-IS global configuration. (#712) * Add OC model for ISIS CSNP Enable Globally --- release/models/isis/openconfig-isis-lsp.yang | 8 +++++++- release/models/isis/openconfig-isis-routing.yang | 8 +++++++- release/models/isis/openconfig-isis.yang | 15 ++++++++++++++- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index c73ee12d1..2796a79ab 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-09-20" { + description + "Add CSNP enable to IS-IS global configuration."; + reference "1.1.0"; + } revision "2022-05-10" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 1ba999873..7b045b613 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-09-20" { + description + "Add CSNP enable to IS-IS global configuration."; + reference "1.1.0"; + } revision "2022-05-10" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 18da87fea..e1601c77d 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2022-09-20" { + description + "Add CSNP enable to IS-IS global configuration."; + reference "1.1.0"; + } revision "2022-05-10" { description @@ -255,6 +261,13 @@ module openconfig-isis { before the router actually runs the SPF computation."; } + leaf csnp-enable-on-p2p-links { + type boolean; + default true; + description + "When set to true, ISIS will always enable CSNP on P2P Links."; + } + leaf hello-padding { type oc-isis-types:hello-padding-type; default "STRICT"; From ae887dd77bc5b1a4c6c985fce0c5d7d822eb2245 Mon Sep 17 00:00:00 2001 From: Ronan Mac Fhlannchadha Date: Thu, 20 Oct 2022 17:01:19 +0100 Subject: [PATCH 080/372] add last configuration timestamp leaf (#719) * add last configuration timestamp leaf --- release/models/system/openconfig-system.yang | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 84ac2b301..fcee6b0a1 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -46,7 +46,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.15.0"; + oc-ext:openconfig-version "0.16.0"; + + revision "2022-09-28" { + description + "Add last configuration timestamp leaf."; + reference "0.16.0"; + } revision "2022-07-25" { description @@ -362,6 +368,15 @@ module openconfig-system { value of the state/software-version leaf in the component of type OPERATING_SYSTEM."; } + + leaf last-configuration-timestamp { + type oc-types:timeticks64; + units "nanoseconds"; + description + "Indicates the monotonically increasing timestamp at which the + last configuration change was made. This may may be through CLI, + gNMI or some other mechanism."; + } } grouping mount-points-top { From 00a27a5f0f3c472205ef293ab238e0530b610811 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 24 Oct 2022 12:18:47 -0700 Subject: [PATCH 081/372] Add base-mac-address (#716) Add base-mac-address leaf * (M) /release/models/platofmr/openconfig-platform.yang --- .../platform/openconfig-platform-common.yang | 8 +++++++- .../models/platform/openconfig-platform.yang | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 1ffa20063..7e27ad01c 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.20.0"; + oc-ext:openconfig-version "0.21.0"; + + revision "2022-09-26" { + description + "Add state data for base-mac-address."; + reference "0.21.0"; + } revision "2022-08-31" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index cc2697f65..d26a6bb75 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.20.0"; + oc-ext:openconfig-version "0.21.0"; + + revision "2022-09-26" { + description + "Add state data for base-mac-address."; + reference "0.21.0"; + } revision "2022-08-31" { description @@ -542,6 +548,17 @@ module openconfig-platform { device, one as primary and the other as secondary, should both report the same value."; } + + leaf base-mac-address { + type oc-yang:mac-address; + description + "This is a MAC address representing the root or primary MAC + address for a component. Components such as CHASSIS and + CONTROLLER_CARD are expected to provide a base-mac-address. The + base mac-address for CHASSIS and a PRIMARY CONTROLLER_CARD may + contain the same value."; + } + } grouping platform-component-temp-alarm-state { From 7c2ac7d08fdd7041427f70c92396b5f247986b5d Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Wed, 9 Nov 2022 20:22:33 -0800 Subject: [PATCH 082/372] Add support for vendor specific hardware drop counters (#715) * Add support for vendor specific hardware drop counters * Add doc/vendor_counter_guide.md Co-authored-by: Darren Loher --- doc/vendor_counter_guide.md | 123 ++++++++++++++++ ...openconfig-platform-pipeline-counters.yang | 139 +++++++++++++++++- 2 files changed, 259 insertions(+), 3 deletions(-) create mode 100644 doc/vendor_counter_guide.md diff --git a/doc/vendor_counter_guide.md b/doc/vendor_counter_guide.md new file mode 100644 index 000000000..2fccac188 --- /dev/null +++ b/doc/vendor_counter_guide.md @@ -0,0 +1,123 @@ +# Vendor-Specific Augmentation for Pipeline Counter + +**Contributors**: roland@arista.com + +This document provides the guidelines for the vendor-specific portions of openconfig-pipeline-counters.yang. As implementations differ from vendor to vendor and platform to platform, a process of adding vendor-specific counters will be defined here. + +## Usage: Vendor-specific pipeline drop counter + +Each implementor should augment `/components/component/integrated-circuit/pipeline-counter/drop/vendor` with their own vendor and platform containers. The naming of the platform container may consist of the platform name, ASIC family, or a combination of both platform and ASIC family. Within the platform container, that container may use the utility grouping `oc-ppc:pipeline-vendor-drop-containers` that provides the adverse/congestion/packet-processing specific containers. For each set of adverse/congestion/packet-processing counters augmented into `oc-ppc:pipeline-vendor-drop-containers`, the sum of the counters should be included in the values of the aggregate leaves: + +- Counters within `.../pipeline-counter/drop/vendor///adverse/state` aggregate into `.../pipeline-counter/drop/state/adverse-aggregate` +- Counters within `.../pipeline-counter/drop/vendor///congestion/state` aggregate into `.../pipeline-counter/drop/state/congestion-aggregate` +- Counters within `.../pipeline-counter/drop/vendor///packet-processing/state` aggregate into `.../pipeline-counter/drop/state/packet-processing-aggregate` + +If these aggregate counters are implemented, the sum of the vendor-specific counters must match the aggregate counters. + +If an integrated-circuit has a vendor-specific packet drop counter which cannot differentiate between packet-processing, congestion and adverse drops, then that counter should still be exposed as a vendor-specific packet-processing counter with an appropriate description in the vendor's augmentation. The `packet-processing-aggregate` counter should be incremented in this scenario as expected above. Such a counter is undesirable as it means this hardware cannot meet the goal for identifying adverse packet drops in the ASIC, but it is better not to ruin the fidelity of the `adverse-aggregate` drop counter with noise of intended packet drops. + +## Example + +This following is a sample augmentation file. + +- Vendor: Acme +- Platform: AsicFamily + +### Example YANG Augmentation + +release/platform/acme-asicfamily-drop-augments.yang + +```yang +grouping acme-asicfamily-adverse-drop-counters { + leaf adverse-reason-counter-a { + type oc-yang:counter64; + } + + leaf adverse-reason-counter-b { + type oc-yang:counter64; + } + + leaf adverse-reason-counter-c { + type oc-yang:counter64; + } +} + +grouping acme-asicfamily-congestion-drop-counters { + leaf congestion-reason-counter-a { + type oc-yang:counter64; + } + + leaf congestion-reason-counter-b { + type oc-yang:counter64; + } + + leaf congestion-reason-counter-c { + type oc-yang:counter64; + } +} + +grouping acme-asicfamily-packet-processing-drop-counters { + leaf packet-processing-reason-counter-a { + type oc-yang:counter64; + } + + leaf packet-processing-reason-counter-b { + type oc-yang:counter64; + } + + leaf packet-processing-reason-counter-c { + type oc-yang:counter64; + } +} + +augment "/components/component/integrated-circuit/pipeline-counter/drop/vendor" { + container acme { + container asic-family { + uses oc-ppc:pipeline-vendor-drop-containers; + } + } +} + +augment "/components/component/integrated-circuit/pipeline-counter/drop/vendor/acme/asic-family/adverse/state" { + uses acme-asicfamily-adverse-drop-counters; +} + +augment "/components/component/integrated-circuit/pipeline-counter/drop/vendor/acme/asic-family/congestion/state" { + uses acme-asicfamily-congestion-drop-counters; +} + +augment "/components/component/integrated-circuit/pipeline-counter/drop/vendor/acme/asic-family/adverse/state" { + uses acme-asicfamily-packet-processing-drop-counters; +} +``` + +Note: Namespaces omitted from `augment ` for brevity + +### Example pyang tree + +```text +module: openconfig-platform + +--rw components + +--rw component* [name] + +--rw integrated-circuit + +--ro oc-ppc:pipeline-counters + +--ro oc-ppc:drop + +--ro oc-ppc:vendor + +--ro acme-ppc:acme + +--ro acme-ppc:asic-family + +--ro oc-ppc:adverse + +--ro oc-ppc:state + +--ro acme-ppc:adverse-reason-counter-a? oc-yang:counter64 + +--ro acme-ppc:adverse-reason-counter-b? oc-yang:counter64 + +--ro acme-ppc:adverse-reason-counter-c? oc-yang:counter64 + +--ro oc-ppc:congestion + +--ro oc-ppc:state + +--ro acme-ppc:congestion-reason-counter-a? oc-yang:counter64 + +--ro acme-ppc:congestion-reason-counter-b? oc-yang:counter64 + +--ro acme-ppc:congestion-reason-counter-c? oc-yang:counter64 + +--ro oc-ppc:packet-processing + +--ro oc-ppc:state + +--ro acme-ppc:packet-processing-reason-counter-a? oc-yang:counter64 + +--ro acme-ppc:packet-processing-reason-counter-b? oc-yang:counter64 + +--ro acme-ppc:packet-processing-reason-counter-c? oc-yang:counter64 +``` diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index 92faee755..69fae0f23 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.2.1"; + oc-ext:openconfig-version "0.3.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2022-11-09" { + description + "Add container for vendor specific drop counters."; + reference "0.3.0"; + } + revision "2022-01-19" { description "Fixed typo for aggregate field."; @@ -94,10 +100,10 @@ module openconfig-platform-pipeline-counters { counters."; container pipeline-counters { + config false; description "Top-level container for the packet, drop, and error counters for the five NPU sub-blocks."; - config false; container packet { description "IC packet counters for all five NPU sub-blocks."; @@ -178,6 +184,14 @@ module openconfig-platform-pipeline-counters { container drop { description "IC drop counters for all five NPU sub-blocks."; + container state { + description + "State container for IC drop counters"; + + uses pipeline-drop-packet-state; + } + + container interface-block { description "The IC interface subsystem connects the IC to the external PHY or @@ -248,6 +262,8 @@ module openconfig-platform-pipeline-counters { uses pipeline-drop-packet-host-interface-block-state; } } + + uses pipeline-vendor-drop-packets; } container errors { @@ -963,11 +979,11 @@ module openconfig-platform-pipeline-counters { leaf active { type boolean; + default false; description "The error is currently in an active state. When the system detects that the specified threshold is exceeded, this value should be set to true."; - default false; oc-ext:telemetry-on-change; } @@ -1048,6 +1064,123 @@ module openconfig-platform-pipeline-counters { } + grouping pipeline-drop-packet-state { + description + "Grouping of pipeline drop packet state."; + + leaf adverse-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters where the switch is + unexpectedly dropping packets. Occurrence of these drops on a stable + (no recent hardware or config changes) and otherwise healthy + switch needs further investigation."; + } + + leaf congestion-aggregate { + type oc-yang:counter64; + description + "This tracks the aggregation of all counters where the expected + conditions of packet drops due to internal congestion in some block of + the hardware that may not be visible in through other congestion + indicators like interface discards or queue drop counters."; + } + + leaf packet-processing-aggregate { + type oc-yang:counter64; + description + "This aggregation of counters represents the conditions in which + packets are dropped due to legitimate forwarding decisions (ACL drops, + No Route etc.)"; + } + } + + grouping pipeline-vendor-drop-packets { + description + "Grouping for vendor specific drop packets"; + + container vendor { + description + "Counters within these containers are defined and augmented by vendors. + As each ASIC and vendor has different implementation and internal + parts where packets may be dropped at any point in time. Providing + specific hardware counters provides better visibility into traffic drop. + + The recommended useage of this container is to create an augment at + .../pipeline-counter/drop/vendor that contains additional vendor/platform + specific containers. + + e.g. + augment /components/component/integrated-circuit/pipeline-counter/drop/vendor { + container { + container { + uses pipeline-vendor-drop-containers; + } + } + }"; + + reference "doc/vendor_counter_guide.md"; + } + } + + grouping pipeline-vendor-drop-containers { + description + "A utility grouping for vendors to insert when augmenting the vendor + drop counters container .../pipeline-counter/drop/vendor. + + Counters that cannot differentiate between adverse, congestion, and + packet-processing should still be exposed as a vendor-specific, + packet-processing counter."; + + reference "doc/vendor_counter_guide.md"; + + container adverse { + description + "These counters capture where the switch is unexpectedly dropping + packets. Occurrence of these drops on a stable (no recent hardware + or config changes) and otherwise healthy switch needs further + investigation. + + The sum of all counters under this container should match the value in + .../pipeline-counters/drop/state/adverse-aggregate"; + + container state { + description + "State container for vendor specific adverse counters."; + } + } + + container congestion { + description + "These counters track expected conditions of packet drops due to + internal congestion in some block of the hardware that may not be + visible in through other congestion indicators like interface + discards or queue drop counters. + + The sum of all counters under this container should match the value in + .../pipeline-counters/drop/state/congestion-aggregate"; + + container state { + description + "State container for vendor specific congestion counters."; + } + } + + container packet-processing { + description + "These counters represent the conditions in which packets are dropped + due to legitimate forwarding decisions (ACL drops, No Route etc.) + + The sum of all counters under this container should match the value in + .../pipeline-counters/drop/state/packet-processing-aggregate"; + + container state { + description + "State container for vendor specific packet processing counters."; + } + } + } + augment "/oc-platform:components/oc-platform:component/oc-platform:integrated-circuit" { description "Add operational state data that corresponds to sub-blocks of an integrated From f00910325ba88922c9880e030445b38e2629bf30 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 14 Nov 2022 10:11:19 -0800 Subject: [PATCH 083/372] Clarify static route index description to use a number (#732) * Clarify description of static route index to recommend use a numeric value --- .../local-routing/openconfig-local-routing.yang | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/release/models/local-routing/openconfig-local-routing.yang b/release/models/local-routing/openconfig-local-routing.yang index f3371b529..2b9a90a01 100644 --- a/release/models/local-routing/openconfig-local-routing.yang +++ b/release/models/local-routing/openconfig-local-routing.yang @@ -43,7 +43,13 @@ module openconfig-local-routing { protocol-specific policy after importing the route into the protocol for distribution (again via routing policy)."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.0.1"; + + revision "2022-11-01" { + description + "Update static route nexthop index description."; + reference "2.0.1"; + } revision "2022-05-10" { description @@ -209,7 +215,8 @@ module openconfig-local-routing { "An user-specified identifier utilised to uniquely reference the next-hop entry in the next-hop list. The value of this index has no semantic meaning other than for referencing - the entry."; + the entry. It is observed that implementations typically + only support a numeric value for this string. "; } leaf next-hop { From 6dadd6c8933a46ada1a754edd7163bd779b2cd21 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 29 Nov 2022 17:31:27 -0800 Subject: [PATCH 084/372] Add @dplore as a default CODEOWNER for openconfig/public files. (#708) * (M) .github/CODEOWNERS - Public model writers do not have +rw for files outside of release/models. Add Darren Loher as a primary codeowner to expand this approval scope. --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 3b5ac5d39..1788349d0 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,7 +1,7 @@ # Definition of code OWNERS for the openconfig/public repository. # # default approvers: -* @aashaikh @robshakir +* @aashaikh @robshakir @dplore # the release/models directory (all YANG content) # is maintained by the public-writers OpenConfig team. From 49d681af769f1d1f895c95594bfcf3ea5401777f Mon Sep 17 00:00:00 2001 From: Caleb Geiger <48812321+ElodinLaarz@users.noreply.github.com> Date: Wed, 30 Nov 2022 11:48:25 -0500 Subject: [PATCH 085/372] Update openconfig-policy-types.yang (#739) * Update openconfig-policy-types.yang Add new INSTALL_PROTOCOL_TYPE local to openconfig-policy-types.yang. --- .../policy/openconfig-policy-types.yang | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/release/models/policy/openconfig-policy-types.yang b/release/models/policy/openconfig-policy-types.yang index 86b407e39..d33dfe28d 100644 --- a/release/models/policy/openconfig-policy-types.yang +++ b/release/models/policy/openconfig-policy-types.yang @@ -24,7 +24,13 @@ module openconfig-policy-types { policy. It can be imported by modules that contain protocol- specific policy conditions and actions."; - oc-ext:openconfig-version "3.2.2"; + oc-ext:openconfig-version "3.2.3"; + + revision "2022-11-08" { + description + "Add INSTALL_PROTOCOL_TYPE local."; + reference "3.2.3"; + } revision "2022-02-11" { description @@ -253,4 +259,28 @@ module openconfig-policy-types { reference "RFC 5440"; } + + identity LOCAL { + base INSTALL_PROTOCOL_TYPE; + description + "A local route. + + Local routes define a route for the one specific IP + address configured on the router interface. They are + created in association with directly connected routes. + Local routes must end with a /32 in the case of ipv4 + or /128 for ipv6. + For example, when configuring an interface with the ip + address + + 10.244.136.79/31 + + the derived DIRECTLY_CONNECTED route is + + 10.244.136.78/31 + + and the derived LOCAL route is + + 10.244.136.79/32."; + } } From 51fd82fcb047f0aa5151b72fc429d5ef71b4d469 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Thu, 1 Dec 2022 12:59:08 -0800 Subject: [PATCH 086/372] Add OpenConfig Release Versioning Proposal (#720) * Add OpenConfig Release Versioning Proposal --- doc/releases.md | 80 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 doc/releases.md diff --git a/doc/releases.md b/doc/releases.md new file mode 100644 index 000000000..31661dd9a --- /dev/null +++ b/doc/releases.md @@ -0,0 +1,80 @@ +# OpenConfig Release Versioning + +## Rationale + +As the OpenConfig project matures and is adopted by more implementors and +network operators, model changes are becoming increasingly frequent. This has +made identifying compatible and well-known sets of models more difficult. +Furthermore, uncontrolled and frequent breaking changes can create excessive +burden on implementors and operators alike. + +This revision proposal aims to address these problems by introducing +[semantic versioning](https://semver.org/) to the set of OpenConfig models as a +whole along with some OpenConfig-specific guidelines. As a side note, these +releases are compatible with the notion of +[YANG release bundles](https://github.com/openconfig/public/blob/master/release/models/catalog/openconfig-module-catalog.yang). + +## Policy + +### Basic Guidelines + +1. A regular release of https://github.com/openconfig/public containing a set + of compatible models (consisting of the entire set of models within the + `openconfig/public` repo) is created roughly every **quarter**. The tag is + named `vx.y.z` (e.g. `v1.2.0`) following + [semantic versioning rules](https://semver.org/). A major, minor, or patch + version increment is possible at each release, although non-backward + compatible releases SHOULD be released at a less-frequent cadence. + + At the current time, releases are only expected to occur at the HEAD branch + of the repository, meaning patch releases for non-HEAD model versions are + not expected to be made. + +2. Non-backward compatible model changes affecting a feature that has + reasonable functional test coverage (via + [OpenConfig featureprofiles](https://github.com/openconfig/featureprofiles/)) + or implemented on a device SHOULD be made infrequently. The OpenConfig + working group will create non-backward compatible releases periodically by + considering both velocity and maintenance cost implications. + + e.g. It is November 2022, and the current latest release of OpenConfig + models is `v2.3.1`. The OpenConfig community decides to change the default + value of the leaf path `/interfaces/interface/config/enabled`. This is a + breaking change since it would cause featureprofile tests that test for the + behaviour of the default value without explicitly setting this leaf to begin + to fail. As a result, the pull request for this change is not merged until + the end of the quarter in December. In January 2022, a new release is + created, versioned `v3.0.0` containing this update. + +3. Any non-backward compatible change for a pre-`v1.0.0` YANG module does NOT + by itself necessitate a major revision change for the overall models + repository. + +4. [Patch releases](https://semver.org/#spec-item-6) may be created at any time + for backward compatible bug fixes. + +5. [Pre-releases](https://semver.org/#spec-item-9) may be created at anytime to + quickly introduce new changes to the models. These are not intended to be + long-term, stable releases -- they should be replaced with the next regular + release that encompasses these changes as soon as it becomes available. + +6. Wherever possible, it is RECOMMENDED to make backward compatible API changes + (e.g. deprecating leaves via the + [status statement](https://www.rfc-editor.org/rfc/rfc7950#section-7.21.2)) + for at least one minor release prior to a non-backward compatible API change + in order to ease the transition to the new API. These leaves are then + expected to be removed or modified in the next major version release. NOTE: + This guideline may change once OpenConfig operators gain more experience + managing breaking changes. + +Each release `vx.y.z` (e.g. `v1.2.0`) MAY be given a name for easier human +identification, e.g. "September 2022". A client can thus assert they are +compatible with the "September 2022" release of OpenConfig. It's expected that +vendors will have some deviations and augments from the baseline; further, some +vendors may offer the ability to configure their NOS (network operating system) +to support different releases of https://github.com/openconfig/public. + +### Corner-Case Guidelines + +For non-backward compatible changes involving changing the type of a leaf, the +new leaf SHOULD have a different name than the previous leaf. From ac8beba68bcd6431494e9ec06037b23e7814e595 Mon Sep 17 00:00:00 2001 From: m26singhvi Date: Sat, 3 Dec 2022 04:00:01 +0530 Subject: [PATCH 087/372] Update KeyChain model to accept hex string for key-id #733 (#737) --- release/models/keychain/openconfig-keychain.yang | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/release/models/keychain/openconfig-keychain.yang b/release/models/keychain/openconfig-keychain.yang index 5cb27b75a..adf35eaad 100644 --- a/release/models/keychain/openconfig-keychain.yang +++ b/release/models/keychain/openconfig-keychain.yang @@ -10,6 +10,7 @@ module openconfig-keychain { import openconfig-extensions { prefix oc-ext; } import openconfig-keychain-types { prefix oc-keychain-types; } import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } // meta organization "OpenConfig working group"; @@ -32,7 +33,13 @@ module openconfig-keychain { which may be then referenced by other models such as routing protocol management."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.4.0"; + + revision "2022-11-05" { + description + "Update key-id to a union of hex-string and uint64."; + reference "0.4.0"; + } revision "2022-03-05" { description @@ -186,7 +193,12 @@ module openconfig-keychain { description "This grouping defines key-chain key parameters."; leaf key-id { - type uint64; + type union { + type oc-yang:hex-string { + length "1..64"; + } + type uint64; + } description "Identifier for the key within the keychain."; } From 2a54814329edb18a2607d8e1ed430b3e9c4890b1 Mon Sep 17 00:00:00 2001 From: atmanmehta <62303086+atmanmehta@users.noreply.github.com> Date: Fri, 2 Dec 2022 16:11:26 -0800 Subject: [PATCH 088/372] Add ETH_400GBASE_PSM4 PMD type to openconfig-transport-types (#713) * Add ETH_400GBASE_PSM4 PMD type to openconfig-transport-types * Add ETH_400GMSA_PSM4 PMD type to openconfig-transport-types --- .../openconfig-transport-types.yang | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index 474844818..6eeb0aaed 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,8 +22,14 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.16.0"; + oc-ext:openconfig-version "0.17.0"; + revision "2022-10-18" { + description + "Add ETH_400GMSA_PSM4 PMD type"; + reference "0.17.0"; + } + revision "2022-09-26" { description "Add SFP28 and SFP56 form factor identities."; @@ -1064,6 +1070,11 @@ module openconfig-transport-types { description "Ethernet compliance code: 400GBASE_DR4"; } + identity ETH_400GMSA_PSM4 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 400GMSA_PSM4"; + } + identity ETH_UNDEFINED { base ETHERNET_PMD_TYPE; description "Ethernet compliance code: undefined"; From 1c3950656ca139d70babc3ae00e572d485945682 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Mon, 5 Dec 2022 16:59:39 -0800 Subject: [PATCH 089/372] Cleaning up trailing whitespace (#764) * (M) release/models/optical-transport/optical-transport/openconfig-transport-types.yang * Cleaning up trailing whitespace and version bump --- .../optical-transport/openconfig-transport-types.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index 6eeb0aaed..a596ba13e 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,14 +22,20 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.17.0"; + oc-ext:openconfig-version "0.17.1"; + + revision "2022-12-05" { + description + "Fix trailing whitespace"; + reference "0.17.1"; + } revision "2022-10-18" { description "Add ETH_400GMSA_PSM4 PMD type"; reference "0.17.0"; } - + revision "2022-09-26" { description "Add SFP28 and SFP56 form factor identities."; From 96867d01ab6f33f34d280d17be59ab47049939d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Wed, 14 Dec 2022 00:27:07 +0100 Subject: [PATCH 090/372] LDP Protocol: Add support for downstream on demand configuration (#588) * (M) Update release/models/mpls/openconfig-mpls-ldp.yang Added support for downstream on demand. The configuration is proposed per neighbour. State information on the peer advertisement mode is also added. Co-authored-by: Rob Shakir Co-authored-by: samier barguil --- release/models/mpls/openconfig-mpls-ldp.yang | 47 +++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/release/models/mpls/openconfig-mpls-ldp.yang b/release/models/mpls/openconfig-mpls-ldp.yang index 4810fafe8..d70e989f1 100644 --- a/release/models/mpls/openconfig-mpls-ldp.yang +++ b/release/models/mpls/openconfig-mpls-ldp.yang @@ -43,7 +43,13 @@ module openconfig-mpls-ldp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "3.2.0"; + + revision "2022-02-21" { + description + "Added downstream-on-demand support"; + reference "3.2.0"; + } revision "2020-01-09" { description @@ -168,6 +174,21 @@ module openconfig-mpls-ldp { "enumerated type for specifying LDP AFIs"; } + typedef label-advertisement-mode { + type enumeration { + enum DOWNSTREAM_UNSOLICITED { + description + "Downstream Unsolicited."; + } + enum DOWNSTREAM_ON_DEMAND { + description + "Downstream on Demand."; + } + } + description + "Label Advertisement Mode."; + } + // grouping statements grouping ldp-global { @@ -343,6 +364,16 @@ module openconfig-mpls-ldp { "Label space ID of the neighbor."; } + leaf enable-downstream-on-demand { + type boolean; + default "false"; + description + "If this leaf is set to true, LDP downstream on demand is enabled in + the LDP session and the router advertises DoD to the peer. If the peer + also adverstises DoD, then downstream on demand is used in the session, + otherwise downstream unsolicited is used."; + } + } grouping mpls-ldp-neighbor-state { @@ -375,6 +406,20 @@ module openconfig-mpls-ldp { "RFC5036, Sec. 2.5.4."; } + leaf peer-label-advertisement-mode { + type label-advertisement-mode; + description + "This leaf shows the Label Advertisement Mode which is advertised by the peer."; + } + + leaf negotiated-label-advertisement-mode { + type label-advertisement-mode; + description + "This leaf shows the Label Advertisement Mode negotiated based on local + and remote preferences. If DoD is enabled and the peer also adverstises DoD, + then downstream is negotiated. Otherwise, downstream unsolicited is used."; + } + } grouping mpls-ldp-adjacency-state { From 69f571c3b2e2db93dd88d66c424abed45281e527 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 14 Dec 2022 01:06:47 -0700 Subject: [PATCH 091/372] Add missing version statement to openconfig-extensions (#722) * (M) release/models/openconfig-extensions.yang - Add missing version statement --- release/models/openconfig-extensions.yang | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/release/models/openconfig-extensions.yang b/release/models/openconfig-extensions.yang index c5e24ba22..2e0fd9f07 100644 --- a/release/models/openconfig-extensions.yang +++ b/release/models/openconfig-extensions.yang @@ -18,6 +18,14 @@ module openconfig-extensions { "This module provides extensions to the YANG language to allow OpenConfig specific functionality and meta-data to be defined."; + oc-ext:openconfig-version "0.5.1"; + + revision "2022-10-05" { + description + "Add missing version statement."; + reference "0.5.1"; + } + revision "2020-06-16" { description "Add extension for POSIX pattern statements."; From 931b2117c8b26754d0a6bffa48db9363d7ed729b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Thu, 15 Dec 2022 00:49:26 +0100 Subject: [PATCH 092/372] Manage prefix list and extend ACLs to match prefix lists in source/destination (#649) * introduce top level model to define sets of IP source/destination prefix and port lists Co-authored-by: Rob Shakir Co-authored-by: samier barguil --- release/models/acl/openconfig-acl.yang | 11 +- .../models/acl/openconfig-packet-match.yang | 70 +++++- release/models/defined-sets/.spec.yml | 6 + .../defined-sets/openconfig-defined-sets.yang | 227 ++++++++++++++++++ 4 files changed, 312 insertions(+), 2 deletions(-) create mode 100644 release/models/defined-sets/.spec.yml create mode 100644 release/models/defined-sets/openconfig-defined-sets.yang diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 5a6715965..c740e45ca 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -11,6 +11,7 @@ module openconfig-acl { import openconfig-interfaces { prefix oc-if; } import openconfig-yang-types { prefix oc-yang; } import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } // meta organization "OpenConfig working group"; @@ -34,7 +35,14 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.2.2"; + oc-ext:openconfig-version "1.3.0"; + + revision "2022-06-01" { + description + "Add the management of prefix lists + that can be used in matches"; + reference "1.3.0"; + } revision "2022-01-14" { description @@ -842,6 +850,7 @@ module openconfig-acl { } } + grouping acl-config { description "Global configuration data for ACLs"; diff --git a/release/models/acl/openconfig-packet-match.yang b/release/models/acl/openconfig-packet-match.yang index e319a46c0..4b87cdea1 100644 --- a/release/models/acl/openconfig-packet-match.yang +++ b/release/models/acl/openconfig-packet-match.yang @@ -13,6 +13,7 @@ module openconfig-packet-match { import openconfig-packet-match-types { prefix oc-pkt-match-types; } import openconfig-extensions { prefix oc-ext; } import openconfig-mpls-types { prefix oc-mpls; } + import openconfig-defined-sets { prefix oc-sets; } // meta organization "OpenConfig working group"; @@ -27,7 +28,14 @@ module openconfig-packet-match { field is omitted from a match expression, the effect is a wildcard ('any') for that field."; - oc-ext:openconfig-version "1.3.1"; + oc-ext:openconfig-version "1.4.0"; + + revision "2022-06-01" { + description + "Add the ability to match source/destination ipv4 and + ipv6 prefix list and source/destination port list "; + reference "1.4.0"; + } revision "2021-06-16" { description @@ -274,12 +282,32 @@ module openconfig-packet-match { "Source IPv4 address prefix."; } + leaf source-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv4-prefix-sets" + + "/oc-sets:ipv4-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv4 address prefix Set + to match the source address"; + } + leaf destination-address { type oc-inet:ipv4-prefix; description "Destination IPv4 address prefix."; } + leaf destination-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv4-prefix-sets" + + "/oc-sets:ipv4-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv4 address prefix set + to match the destination address"; + } + uses ip-protocol-fields-common-config; } @@ -323,6 +351,16 @@ module openconfig-packet-match { "Source IPv6 address prefix."; } + leaf source-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv6-prefix-sets" + + "/oc-sets:ipv6-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv6 address prefix set + to match the source address"; + } + leaf source-flow-label { type oc-inet:ipv6-flow-label; description @@ -335,6 +373,16 @@ module openconfig-packet-match { "Destination IPv6 address prefix."; } + leaf destination-address-prefix-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:ipv6-prefix-sets" + + "/oc-sets:ipv6-prefix-set/oc-sets:name"; + } + description + "Reference to a IPv6 address prefix set + to match the destination address"; + } + leaf destination-flow-label { type oc-inet:ipv6-flow-label; description @@ -388,12 +436,32 @@ module openconfig-packet-match { "Source port or range"; } + leaf source-port-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:port-sets" + + "/oc-sets:port-set/oc-sets:name"; + } + description + "Reference to a port set + to match the source port"; + } + leaf destination-port { type oc-pkt-match-types:port-num-range; description "Destination port or range"; } + leaf destination-port-set { + type leafref { + path "/oc-sets:defined-sets/oc-sets:port-sets" + + "/oc-sets:port-set/oc-sets:name"; + } + description + "Reference to a port set + to match the destination port"; + } + leaf-list tcp-flags { type identityref { base oc-pkt-match-types:TCP_FLAGS; diff --git a/release/models/defined-sets/.spec.yml b/release/models/defined-sets/.spec.yml new file mode 100644 index 000000000..244c93815 --- /dev/null +++ b/release/models/defined-sets/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-acl-defined-sets + docs: + - yang/defined-sets/openconfig-defined-sets.yang + build: + - yang/defined-sets/openconfig-defined-sets.yang + run-ci: true diff --git a/release/models/defined-sets/openconfig-defined-sets.yang b/release/models/defined-sets/openconfig-defined-sets.yang new file mode 100644 index 000000000..0c2a92bec --- /dev/null +++ b/release/models/defined-sets/openconfig-defined-sets.yang @@ -0,0 +1,227 @@ +module openconfig-defined-sets { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/defined-sets"; + + prefix "oc-sets"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-inet-types { prefix oc-inet; } + import openconfig-packet-match-types { prefix oc-pkt-match-types; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module defines configuration and operational state + data for defined sets (sets of IPv4 prefixes, sets of + IPv6 prefixes, sets of ports, etc). These sets are used, + for example, in network access control lists (i.e., filters, + rules, etc.) in the matching fields."; + + oc-ext:openconfig-version "1.0.0"; + + revision "2022-12-14" { + description + "Initial version of the defined set model"; + reference "1.0.0"; + } + + // OpenConfig specific extensions for module metadata. + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping ipv4-prefix-sets-config { + description "Configuration parameters of IPv4 prefix sets."; + + leaf name { + type string; + description + "A user defined name of the IPv4 prefix set."; + } + + leaf description { + type string; + description "A user defined IPv4 prefix set description."; + } + + leaf-list prefix { + type oc-inet:ipv4-prefix; + description + "A user defined list of IPv4 prefixes to be used in match + conditions. Each entry is a IPv4 + mask combination."; + } + } + + grouping ipv6-prefix-sets-config { + description "Configuration parameters of IPv6 prefix sets."; + + leaf name { + type string; + description + "Name of the IPv6 prefix set."; + } + + leaf description { + type string; + description + "A user defined IPv6 prefix set description."; + } + + leaf-list prefix { + type oc-inet:ipv6-prefix; + description + "A user defined list of IPv6 prefixes to be used in match + conditions. Each entry is a IPv6 + mask combination."; + } + } + + grouping port-sets-config { + description + "Configuration parameters of port sets."; + + leaf name { + type string; + description + "A user defined name of the port set."; + } + + leaf description { + type string; + description + "A user defined description for the port set"; + } + + leaf-list port { + type oc-pkt-match-types:port-num-range; + description + "A user defined set of ports to be + used in the match conditions."; + } + } + + grouping defined-sets { + description "Configuration of Defined Sets."; + + container ipv4-prefix-sets { + description + "Container to hold the list of IPv4 prefix sets."; + + list ipv4-prefix-set { + key "name"; + description + "List of IPv4 prefix sets."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the IPv4 prefix set."; + } + + container config { + description + "Configuration data for IPv4 prefix sets."; + uses ipv4-prefix-sets-config; + } + + container state { + config false; + description + "State data for IPv4 prefix sets."; + uses ipv4-prefix-sets-config; + } + } + } + + container ipv6-prefix-sets { + description + "Container to hold the list of IPv4 prefix sets."; + + list ipv6-prefix-set { + key "name"; + description "List of IPv6 prefix sets. Each defined set + is uniquely identified by a name"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Reference to the name of the IPv6 prefix set."; + } + + container config { + description + "Configuration data for IPv6 prefix sets."; + uses ipv6-prefix-sets-config; + } + + container state { + config false; + description + "State data for prefix lists."; + uses ipv6-prefix-sets-config; + } + } + } + + container port-sets { + description + "Container to hold the list of port sets."; + + list port-set { + key "name"; + description + "List of port sets. Each por set is uniquely + identified by its name"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "Name of the port set. The name is used to + reference the set in match conditions."; + } + + container config { + description + "Configuration data for port lists."; + uses port-sets-config; + } + + container state { + config false; + description + "State data for port lists."; + uses port-sets-config; + } + } + } + } + + + + grouping defined-sets-top { + description + "Top level grouping for defined-sets"; + + container defined-sets { + description + "Top level enclosing container for defined-set model + config and operational state data."; + uses defined-sets; + } + } + + uses defined-sets-top; + +} From 71a14c9e3ec6abaf1dbbf43efb542a5c60060937 Mon Sep 17 00:00:00 2001 From: Abhiram Kalluru <87454055+akalluru1@users.noreply.github.com> Date: Wed, 14 Dec 2022 15:53:55 -0800 Subject: [PATCH 093/372] Hardware AFT Programming errors module (#725) * Programming errors module Introduce a model of errors of hardware programming of IP routes in a network instance. --- release/models/network-instance/.spec.yml | 2 + .../openconfig-programming-errors.yang | 226 ++++++++++++++++++ 2 files changed, 228 insertions(+) create mode 100644 release/models/network-instance/openconfig-programming-errors.yang diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index efc32de67..6460dff20 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -4,9 +4,11 @@ - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang + - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang build: - yang/network-instance/openconfig-network-instance.yang + - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang run-ci: true - name: openconfig-network-instance-bgp-rib-augment diff --git a/release/models/network-instance/openconfig-programming-errors.yang b/release/models/network-instance/openconfig-programming-errors.yang new file mode 100644 index 000000000..5dafcc105 --- /dev/null +++ b/release/models/network-instance/openconfig-programming-errors.yang @@ -0,0 +1,226 @@ +module openconfig-programming-errors { + prefix "oc-pgrmerrs"; + + namespace "http://openconfig.net/yang/programming-errors"; + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-inet-types { prefix "oc-inet"; } + import openconfig-network-instance { prefix "oc-ni"; } + import openconfig-platform { prefix "oc-platform"; } + import openconfig-types { prefix "oc-types"; } + import openconfig-yang-types { prefix "oc-yang"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides detailed information about the hardware programming + state of various types of routes within a particular network instance. + It can be used to track where there are routing hardware programming errors + on a device."; + + oc-ext:regexp-posix; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + oc-ext:openconfig-version "0.1.0"; + + revision "2022-10-11" { + description + "Initial revision."; + reference "0.1.0"; + } + + grouping ip-routes-common-config { + description + "IP routes hardware programming error common configuration parameters"; + + leaf enabled { + type boolean; + description + "This leaf indicates whether IP routes hardware programming error tracking + is enabled or not"; + } + } + + grouping programming-errors-top { + description + "Top-level grouping for AFT hardware programming errors in OpenConfig."; + + container programming-errors { + description + "Detailed information about the AFT hardware programming state of various types of + routes within a particular network instance. It can be used to track where there + are AFT hardware programming errors on a device."; + + container ip-routes { + description + "The IP AFT/routes hardware programming status within the network-instance. + IP Route programming reports are divided into a set of sub-categories: + - failed programming -- A prefix which is not present in the AFT state is + attempted to be added into the hardware but failed. Traffic destined for + this prefix will not be matched. + - stale programming -- A prefix is already in the AFT is requested to + be updated but failed. Traffic destined for this prefix will be + forwarded to the old next-hop. AFT telemetry should continue to + reflect the old next-hop for the prefix. + - drop programming - these routes are explicitly programmed into hardware + to point to a destination that discards packets. + + Lifecycle of entries/prefixes in the above 3 containers is tied to AFT + telemetry data. When the route gets removed from AFT telemetry data + corresponding entry/prefix will be deleted from above containers as well"; + + container config { + description + "IP route hardware programming errors Configuration parameters"; + + uses ip-routes-common-config; + } + + container state { + config false; + description + "IP route hardware programming errors State parameters"; + + leaf total-errors { + type oc-yang:counter64; + description + "Total number of IP route hardware programming errors encountered"; + } + + uses ip-routes-common-config; + } + + container failed-routes { + config false; + description + "Surrounding container for the list of routes that failed hardware + programming."; + + list failed { + key "prefix"; + + description + "A prefix that was attempted to the programmed into hardware, but the + programming operation failed."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix that keys the failed list."; + } + + container state { + description + "Operational state parameters relating to a failed programming + operation."; + uses route-state-common; + } + } + } + + container stale-routes { + config false; + description + "Surrounding container for the list of routes that are currently in + a stale state."; + + list stale { + key "prefix"; + + description + "A prefix that is currently installed in hardware, but a subsequent + operation to update its programming failed - such that the entry in + hardware is stale."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix that keys the stale list."; + } + + container state { + description + "Operational state parameters relating to a stale route."; + uses route-state-common; + } + } + } + + container drop-routes { + config false; + description + "Surrounding container for the list of routes that are currently in + a drop state."; + + list drop { + key "prefix"; + + description + "A prefix that is currently installed in hardware but with an explicit + instruction that it should discard packets that are destined towards + it."; + + leaf prefix { + type leafref { + path "../state/prefix"; + } + description + "Reference to the prefix that keys the drop list."; + } + + container state { + description + "Operational state parameters relating to a drop route."; + uses route-state-common; + } + } + } + } + } + } + + grouping route-state-common { + description + "Common parameters that correspond to a particular route type."; + + leaf prefix { + type oc-inet:ip-prefix; + description + "The IPv4 or IPv6 prefix that the route state corresponds to."; + } + + leaf time { + type oc-types:timeticks64; + description + "Represents the time the hardware route programming state change was + detected by the monitoring subsystem expressed as nanoseconds since + the Unix epoch."; + } + + leaf-list dest-component { + type leafref { + path "/oc-platform:components/oc-platform:component/oc-platform:name"; + } + description + "The destination component for the route hardware programming"; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance" { + description + "Augment the network-instance model with the hardware programming + errors container."; + + uses programming-errors-top; + } +} From 6cddd552c84bc8863f6ff5bc237dce135de4ef4a Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Mon, 19 Dec 2022 22:07:06 -0800 Subject: [PATCH 094/372] Fix timestamp documentation (#770) Update documentation to specify which time epoch to use. * last-high-watermark in platform resource utilization * last-configuration-timestamp in system --- .../models/platform/openconfig-platform-common.yang | 12 ++++++++++-- release/models/platform/openconfig-platform.yang | 8 +++++++- release/models/system/openconfig-system.yang | 11 +++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 7e27ad01c..bad9ce543 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.21.0"; + oc-ext:openconfig-version "0.21.1"; + + revision "2022-12-19" { + description + "Update last-high-watermark timestamp documentation."; + reference "0.21.1"; + } revision "2022-09-26" { description @@ -164,7 +170,9 @@ submodule openconfig-platform-common { leaf last-high-watermark { type oc-types:timeticks64; description - "The time when the high-watermark was last updated"; + "The timestamp when the high-watermark was last updated. The value + is the timestamp in nanoseconds relative to the Unix Epoch + (Jan 1, 1970 00:00:00 UTC)."; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index d26a6bb75..58ae45412 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.21.0"; + oc-ext:openconfig-version "0.21.1"; + + revision "2022-12-19" { + description + "Update last-high-watermark timestamp documentation."; + reference "0.21.1"; + } revision "2022-09-26" { description diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index fcee6b0a1..0b7239fda 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -46,7 +46,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.16.0"; + oc-ext:openconfig-version "0.16.1"; + + revision "2022-12-19" { + description + "Update last configuration timestamp documentation."; + reference "0.16.1"; + } revision "2022-09-28" { description @@ -375,7 +381,8 @@ module openconfig-system { description "Indicates the monotonically increasing timestamp at which the last configuration change was made. This may may be through CLI, - gNMI or some other mechanism."; + gNMI or some other mechanism. The value is the timestamp in + nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; } } From 6ff1c73fa4b03543713d6977ed5d52d8912074e3 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Mon, 19 Dec 2022 23:09:56 -0700 Subject: [PATCH 095/372] Network-instance type/enabled and YANG/IETF type cleanup (#749) * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Enforce network-instance type as mandatory for all instances - Removal of top-level network-instance enabled leaf - Refactor IETF types to OpenConfig types --- .../openconfig-network-instance-l2.yang | 21 +++++--- .../openconfig-network-instance.yang | 49 ++++++++++--------- 2 files changed, 39 insertions(+), 31 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 592024e9a..d3018f905 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -7,8 +7,8 @@ submodule openconfig-network-instance-l2 { // import some basic types import openconfig-extensions { prefix "oc-ext"; } import openconfig-interfaces { prefix "oc-if"; } - import ietf-yang-types { prefix "yang"; } - import ietf-inet-types { prefix "inet"; } + import openconfig-yang-types { prefix "oc-yang"; } + import openconfig-inet-types { prefix "oc-inet"; } import openconfig-evpn-types { prefix oc-evpn-types; } import openconfig-evpn { prefix "oc-evpn"; } @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-11-18" { + description + "Enforce network-instance type as mandatory, removal of top-level + enabled leaf, migrate IETF types to OpenConfig types"; + reference "2.0.0"; + } revision "2022-09-15" { description @@ -319,7 +326,7 @@ submodule openconfig-network-instance-l2 { "Configuration data for MAC table entries"; leaf mac-address { - type yang:mac-address; + type oc-yang:mac-address; description "MAC address for the dynamic or static MAC table entry"; @@ -577,7 +584,7 @@ submodule openconfig-network-instance-l2 { uses l2ni-l2rib-common-state; leaf host-ip { - type inet:ip-address; + type oc-inet:ip-address; description "Host IP address of the CE device for the L2RIB MAC-IP entry"; reference "RFC7432: BGP MPLS-Based Ethernet VPN"; @@ -599,7 +606,7 @@ submodule openconfig-network-instance-l2 { description "L2RIB Common Property Operational State Data Grouping"; leaf mac-address { - type yang:mac-address; + type oc-yang:mac-address; description "MAC address of the L2RIB MAC or MAC-IP entry"; } leaf vlan { @@ -706,7 +713,7 @@ submodule openconfig-network-instance-l2 { description "A unique entry for the next-hop."; } leaf peer-ip { - type inet:ip-address; + type oc-inet:ip-address; description "Next hop peer address"; } leaf label { diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 3b4bc53a8..d2a8d451f 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -8,8 +8,8 @@ module openconfig-network-instance { prefix "oc-netinst"; // import some basic types - import ietf-yang-types { prefix "yang"; } - import ietf-inet-types { prefix "inet"; } + import openconfig-yang-types { prefix "oc-yang"; } + import openconfig-inet-types { prefix "oc-inet"; } import openconfig-network-instance-types { prefix "oc-ni-types"; } import openconfig-policy-types { prefix "oc-pol-types"; } import openconfig-routing-policy { prefix "oc-rpol"; } @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-11-18" { + description + "Enforce network-instance type as mandatory, removal of top-level + enabled leaf, migrate IETF types to OpenConfig types"; + reference "2.0.0"; + } revision "2022-09-15" { description @@ -297,18 +304,6 @@ module openconfig-network-instance { "A unique name identifying the network instance"; } - uses l2ni-instance { - when "./config/type = 'oc-ni-types:L2VSI' - or ./config/type = 'oc-ni-types:L2P2P' - or ./config/type = 'oc-ni-types:L2L3' - or ./config/type = 'oc-ni-types:DEFAULT_INSTANCE'" { - description - "Layer 2 configuration parameters included when - a network instance is a Layer 2 instance or a - combined L2L3 instance"; - } - } - container config { description "Configuration parameters relating to a network @@ -328,6 +323,18 @@ module openconfig-network-instance { uses network-instance-state; } + uses l2ni-instance { + when "./config/type = 'oc-ni-types:L2VSI' + or ./config/type = 'oc-ni-types:L2P2P' + or ./config/type = 'oc-ni-types:L2L3' + or ./config/type = 'oc-ni-types:DEFAULT_INSTANCE'" { + description + "Layer 2 configuration parameters included when + a network instance is a Layer 2 instance or a + combined L2L3 instance"; + } + } + container evpn { when "../config/type = 'oc-ni-types:L2VSI' or ../config/type = 'oc-ni-types:L3VRF'" { @@ -980,7 +987,7 @@ module openconfig-network-instance { "Configuration parameters relating to an endpoint that is remote from the local system"; leaf remote-system { - type inet:ip-address; + type oc-inet:ip-address; description "The IP address of the device which hosts the remote end-point"; @@ -1194,6 +1201,7 @@ module openconfig-network-instance { type identityref { base "oc-ni-types:NETWORK_INSTANCE_TYPE"; } + mandatory true; description "The type of network instance. The value of this leaf indicates the type of forwarding entries that should be @@ -1207,13 +1215,6 @@ module openconfig-network-instance { of type 'DEFAULT_INSTANCE'."; } - leaf enabled { - type boolean; - description - "Whether the network instance should be configured to be - active on the network element"; - } - leaf description { type string; description @@ -1222,7 +1223,7 @@ module openconfig-network-instance { } leaf router-id { - type yang:dotted-quad; + type oc-yang:dotted-quad; description "A identifier for the local network instance - typically used within associated routing protocols or signalling From 933dffed778133a5f7701ab588111d46bc6361e8 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 14:57:08 -0700 Subject: [PATCH 096/372] Removal of network-instance enabled-address-families leaf-list (#738) * Removal of network-instance enabled-address-families leaf-list * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang * (M) release/models/network-instance/openconfig-network-instance-l3.yang - Removal of unnecessary enabled-address-families leaf-list node --- .../openconfig-network-instance-l2.yang | 8 ++++++- .../openconfig-network-instance-l3.yang | 23 ++++++------------- .../openconfig-network-instance.yang | 23 +++++++++++-------- 3 files changed, 27 insertions(+), 27 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index d3018f905..c415e8af1 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "3.0.0"; + + revision "2022-12-20" { + description + "Removal of top-level enabled-address-families leaf-list"; + reference "3.0.0"; + } revision "2022-11-18" { description diff --git a/release/models/network-instance/openconfig-network-instance-l3.yang b/release/models/network-instance/openconfig-network-instance-l3.yang index 58131e373..c8381416c 100644 --- a/release/models/network-instance/openconfig-network-instance-l3.yang +++ b/release/models/network-instance/openconfig-network-instance-l3.yang @@ -23,7 +23,13 @@ module openconfig-network-instance-l3 { Layer 3 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2022-11-08" { + description + "Removal of top-level enabled-address-families leaf-list"; + reference "2.0.0"; + } revision "2022-09-15" { description @@ -127,21 +133,6 @@ module openconfig-network-instance-l3 { } - grouping l3ni-instance-common-config { - description - "Configuration parameters that are common to L3 network - instances other than the default instance"; - - leaf-list enabled-address-families { - type identityref { - base octypes:ADDRESS_FAMILY; - } - description - "The address families that are to be enabled for this - network instance."; - } - } - grouping l3ni-route-limit-structural { description "Configuration and state for the maximum number of routes diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index d2a8d451f..0edab11a8 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "3.0.0"; + + revision "2022-12-20" { + description + "Removal of top-level enabled-address-families leaf-list"; + reference "3.0.0"; + } revision "2022-11-18" { description @@ -294,7 +300,12 @@ module openconfig-network-instance { key "name"; description - "Network instances configured on the local system"; + "Network instances configured on the local system + + IPv4 and IPv6 forwarding are enabled by default within an L3 + network-instance and subsequently, routes can be populated + into the network-instance using protocols that enable IPv4 and + IPv6 configuration without explicitly enabling these."; leaf name { type leafref { @@ -900,14 +911,6 @@ module openconfig-network-instance { description "Type dependent network instance configuration"; - uses oc-ni-l3:l3ni-instance-common-config { - when "./type = 'oc-ni-types:L3VRF' or ./type = 'oc-ni-types:L2L3'" { - description - "Layer 3 VRF configuration parameters included when a - network instance is a L3VRF or combined L2L3 instance"; - } - } - uses l2ni-instance-common-config { when "./type = 'oc-ni-types:L2VSI' or ./type = 'oc-ni-types:L2P2P'" + " or ./type = 'oc-ni-types:L2L3'" { From 8733011c81c5b2a26a1c9a391b07faad2a7e3b5f Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 16:20:44 -0700 Subject: [PATCH 097/372] Normalize and remove single 'unique' statement among model set (#736) * Normalize and remove single 'unique' statement among model set * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Remove network-instance interface list unique statement --- .../network-instance/openconfig-network-instance-l2.yang | 8 +++++++- .../network-instance/openconfig-network-instance.yang | 9 +++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index c415e8af1..bce2463fb 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.1.0"; + + revision "2022-12-21" { + description + "Removal of interface list unique statement"; + reference "3.1.0"; + } revision "2022-12-20" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 0edab11a8..754e9da93 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.1.0"; + + revision "2022-12-21" { + description + "Removal of interface list unique statement"; + reference "3.1.0"; + } revision "2022-12-20" { description @@ -483,7 +489,6 @@ module openconfig-network-instance { list interface { key "id"; - unique "config/interface config/subinterface"; description "An interface associated with the network instance"; From 727595b02473faa7c722d5b2bd51cf1c416cf347 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 16:52:54 -0700 Subject: [PATCH 098/372] Remove unused import from openconfig-acl (#771) * (M) release/models/acl/openconfig-acl.yang - Remove unused openconfig-inet-types import --- release/models/acl/openconfig-acl.yang | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index c740e45ca..f22f88b56 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -11,7 +11,6 @@ module openconfig-acl { import openconfig-interfaces { prefix oc-if; } import openconfig-yang-types { prefix oc-yang; } import openconfig-extensions { prefix oc-ext; } - import openconfig-inet-types { prefix oc-inet; } // meta organization "OpenConfig working group"; @@ -35,7 +34,13 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.3.1"; + + revision "2022-12-20" { + description + "Remove unused openconfig-inet-types import"; + reference "1.3.1"; + } revision "2022-06-01" { description From c08de573162a00d70f050e94ba9a5fd160060dc5 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 20 Dec 2022 17:00:41 -0700 Subject: [PATCH 099/372] Removal of global per network-instance MTU (#753) * (M) release/models/network-instance/openconfig-network-instance.yang * (M) release/models/network-instance/openconfig-network-instance-l2.yang - Removal of global per network-instance MTU (config/state) --- .../openconfig-network-instance-l2.yang | 21 ++++++---------- .../openconfig-network-instance.yang | 25 ++++++------------- 2 files changed, 14 insertions(+), 32 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index bce2463fb..f15f747ae 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "4.0.0"; + + revision "2022-12-21" { + description + "Removal of global per network-instance MTU"; + reference "4.0.0"; + } revision "2022-12-21" { description @@ -266,19 +272,6 @@ submodule openconfig-network-instance-l2 { } } - grouping l2ni-instance-common-config { - description - "Common configuration options which are specific to Layer 2 - network instances"; - - leaf mtu { - type uint16; - description - "The maximum frame size which should be supported for this - instance for Layer 2 frames"; - } - } - grouping l2ni-fdb-mac-config { description "Parameters relating to FDB behaviour relating to MAC diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 754e9da93..42de768f8 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "4.0.0"; + + revision "2022-12-21" { + description + "Removal of global per network-instance MTU"; + reference "4.0.0"; + } revision "2022-12-21" { description @@ -326,7 +332,6 @@ module openconfig-network-instance { "Configuration parameters relating to a network instance"; uses network-instance-config; - uses network-instance-type-dependent-config; } @@ -336,7 +341,6 @@ module openconfig-network-instance { "Operational state parameters relating to a network instance"; uses network-instance-config; - uses network-instance-type-dependent-config; uses network-instance-state; } @@ -912,21 +916,6 @@ module openconfig-network-instance { } } - grouping network-instance-type-dependent-config { - description - "Type dependent network instance configuration"; - - uses l2ni-instance-common-config { - when "./type = 'oc-ni-types:L2VSI' or ./type = 'oc-ni-types:L2P2P'" + - " or ./type = 'oc-ni-types:L2L3'" { - description - "Layer 2 configuration parameters included when - a network instance is a Layer 2 instance or a - combined L2L3 instance"; - } - } - } - grouping instance-endpoint-config { description "Configuration data relating to an forwarding-instance From f04dff4e782f9795da6e06323353c44000853a07 Mon Sep 17 00:00:00 2001 From: sugrimov <114244197+sugrimov@users.noreply.github.com> Date: Tue, 3 Jan 2023 19:36:47 +0000 Subject: [PATCH 100/372] Add uRPF aggregate drop counter to pipeline-drop-packet-state. (#757) * Add uRPF aggregate drop counter to pipeline-drop-packet-state. * Update release/models/platform/openconfig-platform-pipeline-counters.yang Co-authored-by: Darren Loher --- .../openconfig-platform-pipeline-counters.yang | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index 69fae0f23..eae57ffb5 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2022-12-01" { + description + "Add uRPF aggregate drop counter."; + reference "0.3.1"; + } + revision "2022-11-09" { description "Add container for vendor specific drop counters."; @@ -1093,6 +1099,16 @@ module openconfig-platform-pipeline-counters { packets are dropped due to legitimate forwarding decisions (ACL drops, No Route etc.)"; } + + leaf urpf-aggregate { + type oc-yang:counter64; + description + "This aggregation of counters represents the conditions in which + packets are dropped due to failing uRPF lookup check. This counter + and the packet-processing-aggregate counter should be incremented + for each uRPF packet drop."; + } + } grouping pipeline-vendor-drop-packets { From a1cad77e18edd576fce8db88bf5de30347603f89 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 17 Jan 2023 21:40:47 -0800 Subject: [PATCH 101/372] Add support for IPv6 RA features. (#741) * Add support for IPv6 RA features. * (M) release/models/interfaces/openconfig-if-ip.yang - Add support for explicit configuration of the M and O bits. - Add support for configuration of prefixes within an RA and the flags associated with them. Co-authored-by: dplore --- .../models/interfaces/openconfig-if-ip.yang | 132 +++++++++++++++++- 1 file changed, 131 insertions(+), 1 deletion(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 8c9fc171f..dee5d568d 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.1.0"; + + revision "2022-11-09" { + description + "Add additional IPv6 router-advertisement features."; + reference "3.1.0"; + } revision "2019-01-08" { description @@ -907,6 +913,84 @@ module openconfig-if-ip { "When set to true, router advertisement neighbor discovery messages are not transmitted on this interface."; } + + leaf managed { + type boolean; + default false; + description + "When set to true, the managed address configuration (M) flag is set in + the advertised router advertisement. The M flag indicates that there are + addresses available via DHCPv6."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.2"; + } + + leaf other-config { + type boolean; + default false; + description + "When set to true, the other configuration (O) flag is set in the + advertised router advertisement. The O flag indicates that there is + other configuration available via DHCPv6 (e.g., DNS servers)."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.2"; + } + } + + grouping ipv6-ra-prefix-config { + description + "Configuration parameters for an individual prefix within an IPv6 + router advertisement."; + + leaf prefix { + type oc-inet:ipv6-prefix; + description + "IPv6 prefix to be advertised within the router advertisement + message."; + } + + leaf valid-lifetime { + type uint32; + units seconds; + description + "The length of time that the prefix is valid relative to the time + the packet was sent."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.2"; + } + + leaf preferred-lifetime { + type uint32; + units seconds; + description + "The length of time that the address within the prefix remains + in the preferred state, i.e., unrestricted use is allowed by + upper-layer protocols. See RFC4862 for a complete definition + of preferred behaviours."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.2"; + } + + leaf disable-advertisement { + type boolean; + description + "When set to true, the prefix is not advertised within + router advertisement messages that are sent as a result of + router soliciation messages."; + } + + leaf disable-autoconfiguration { + type boolean; + description + "When set to true, the prefix is marked as not to be used for stateless + address configuration. This is achieved by setting the autonomous address + configuration bit for the prefix."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.1"; + } + + leaf enable-onlink { + type boolean; + description + "When set to true, the prefix is marked as being on link by setting the + L-bit for the prefix within a router advertisement."; + reference "RFC4861: Neighbor Discovery for IPv6, section 4.6.1"; + } } grouping ipv4-proxy-arp-config { @@ -1142,6 +1226,52 @@ module openconfig-if-ip { advertisements for IPv6."; uses ipv6-ra-config; } + + container prefixes { + description + "Container for a list of prefixes that are included in the + router advertisement message."; + + list prefix { + key "prefix"; + + description + "List of prefixes that are to be included in the IPv6 + router-advertisement messages for the interface. The list + is keyed by the IPv6 prefix in CIDR representation. + + Prefixes that are listed are those that are to be + advertised in router advertisement messages. Where there + are IPv6 global addresses configured on an interface and + the prefix is not listed in the prefix list, it MUST NOT + be advertised in the router advertisement message."; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the IPv6 prefix key for the prefix list."; + } + + container config { + description + "Configuration parameters corresponding to an IPv6 prefix + within the router advertisement."; + + uses ipv6-ra-prefix-config; + } + + container state { + config false; + description + "Operational state parameters corresponding to an IPv6 prefix + within the router advertisement."; + + uses ipv6-ra-prefix-config; + } + } + } } container neighbors { From 68e56179f4b5bf3dc106ed3ecd549f05ed938ad8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leonardo=20G=C3=B3mez?= <39743862+lgomez9@users.noreply.github.com> Date: Fri, 20 Jan 2023 00:38:44 -0500 Subject: [PATCH 102/372] Added NTP configuration and state to network-instance model. (#767) * Added network-instance-ref to NTP servers. * Removed ntp prefix from source-address. --- release/models/system/openconfig-system.yang | 30 ++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 0b7239fda..0ba4dc125 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -20,6 +20,7 @@ module openconfig-system { import openconfig-alarms { prefix oc-alarms; } import openconfig-messages { prefix oc-messages; } import openconfig-license { prefix oc-license; } + import openconfig-network-instance { prefix oc-ni; } // meta organization "OpenConfig working group"; @@ -46,7 +47,14 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.16.1"; + oc-ext:openconfig-version "0.17.0"; + + revision "2022-12-20" { + description + "Added network instance leaf to ntp client, and dropped + ntp-source-address from global to individual config. Removed ntp prefix."; + reference "0.17.0"; + } revision "2022-12-19" { description @@ -701,6 +709,18 @@ module openconfig-system { "Indicates whether this server should be preferred or not."; } + + leaf network-instance { + type oc-ni:network-instance-ref; + description + "The network instance used to find this server."; + } + + leaf source-address { + type oc-inet:ip-address; + description + "Source address to use on outgoing NTP packets"; + } } grouping system-ntp-server-state { @@ -901,12 +921,6 @@ module openconfig-system { from the servers defined in the 'ntp/server' list."; } - leaf ntp-source-address { - type oc-inet:ip-address; - description - "Source address to use on outgoing NTP packets"; - } - leaf enable-ntp-auth { type boolean; default false; @@ -1260,4 +1274,4 @@ module openconfig-system { // data definition statements uses system-top; -} +} \ No newline at end of file From cb625b428a196be0920875bcf92a6701bbb6c7e1 Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Wed, 25 Jan 2023 09:36:31 -0800 Subject: [PATCH 103/372] [WiFi] Replace uptime counter with timestamp (#711) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Change uptime counter to up-time timestamp This replaces the "uptime" counter leaf with an oc-types:timeticks64 "up-time" timestamp. This prevents unecessary chrun to telemetry collectors. * Readded uptime leaf and set it as deprecated * Update version to minor release since this is no longer a breaking change. * Update model version reference. --- .../models/wifi/openconfig-ap-manager.yang | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index 8f99920fa..317a423ef 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -13,6 +13,7 @@ module openconfig-ap-manager { import openconfig-yang-types { prefix oc-yang; } import openconfig-inet-types { prefix oc-inet; } import openconfig-wifi-types { prefix oc-wifi; } + import openconfig-types { prefix oc-types; } // Meta organization "OpenConfig working group"; @@ -25,7 +26,14 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-17" { + description + "Replace uptime counter with up-time oc-types:timeticks64 timestamp. Sets + uptime leaf to deprecated."; + reference "1.3.0"; + } revision "2022-05-24" { description @@ -132,9 +140,19 @@ module openconfig-ap-manager { "The current operational state of the AP."; } + leaf up-time { + type oc-types:timeticks64; + units nanoseconds; + description + "Timestamp when this AP last changed its op-state to 'UP'. The value is + the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 + 00:00:00 UTC)."; + } + leaf uptime { type uint32; units seconds; + status deprecated; description "Seconds this AP has been in the op-state of 'UP'."; } From 2a6e250e3141ae7d44493134c7308723da3a244e Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Wed, 25 Jan 2023 09:38:57 -0800 Subject: [PATCH 104/372] [WiFi] Split phy-rate into rx/tx pay-rate leaves (#706) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Split the client phy-rate into separate rx/tx phy-rate leaves Both are important for debug purposes of downlink vs uplink issues, the leaf should be split into both receive and transmit phy-rate. * Update revision number to 2.0.0 This change qualifies as a major revision as per https://github.com/openconfig/public/blob/e9e3a82693d1f26c61d7fbf85b3b2d0418d4af9e/release/models/openconfig-extensions.yang#L53 thus updating the revision to 2.0.0 * Marks phy-rate as deprecated, update version to minor change. --- release/models/wifi/openconfig-wifi-mac.yang | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index 7ad274d74..bac0cb419 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,14 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-17" { + description + "Splits client phy-rate leaf into rx/tx phy-rate leaves. Marks phy-rate + as deprecated."; + reference "1.2.0"; + } revision "2022-03-24" { description @@ -1352,10 +1359,23 @@ module openconfig-wifi-mac { leaf phy-rate { type uint16; + status deprecated; description "Last used PHY rate of connected client."; } + leaf rx-phy-rate { + type uint16; + description + "Last used PHY rate received from connected client."; + } + + leaf tx-phy-rate { + type uint16; + description + "Last used PHY rate transmitted to connected client."; + } + leaf connection-mode { type enumeration { enum A { From 4b81d5832537c6a4414f83236891d55842f7870e Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 25 Jan 2023 13:20:08 -0800 Subject: [PATCH 105/372] Fix defined-sets spec file (#788) --- release/models/defined-sets/.spec.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/models/defined-sets/.spec.yml b/release/models/defined-sets/.spec.yml index 244c93815..6947d635b 100644 --- a/release/models/defined-sets/.spec.yml +++ b/release/models/defined-sets/.spec.yml @@ -1,4 +1,4 @@ -- name: openconfig-acl-defined-sets +- name: openconfig-defined-sets docs: - yang/defined-sets/openconfig-defined-sets.yang build: From c407d1b32728038edf4184a7bbcff9335f942332 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 25 Jan 2023 14:13:04 -0800 Subject: [PATCH 106/372] Fix `.spec.yml` where name doesn't match module name to fix online documentation. (#789) **Summary:** This PR fixes up the `.spec.yml` files such that so that almost all paths now point to valid links in the https://openconfig.net/projects/models/paths/index.html page. --- release/models/ate/.spec.yml | 4 +--- release/models/catalog/.spec.yml | 2 +- release/models/firewall/.spec.yml | 9 +++++++-- release/models/interfaces/.spec.yml | 6 ++++++ release/models/network-instance/.spec.yml | 2 ++ release/models/optical-transport/.spec.yml | 6 +++++- release/models/platform/.spec.yml | 8 ++++++++ release/models/stp/.spec.yml | 2 +- release/models/system/.spec.yml | 7 ++++++- 9 files changed, 37 insertions(+), 9 deletions(-) diff --git a/release/models/ate/.spec.yml b/release/models/ate/.spec.yml index 673f94a7a..90963be13 100644 --- a/release/models/ate/.spec.yml +++ b/release/models/ate/.spec.yml @@ -1,8 +1,6 @@ -- name: openconfig-ate +- name: openconfig-ate-flow docs: - yang/ate/openconfig-ate-flow.yang - - yang/ate/openconfig-ate-intf.yang build: - yang/ate/openconfig-ate-flow.yang - - yang/ate/openconfig-ate-intf.yang run-ci: true diff --git a/release/models/catalog/.spec.yml b/release/models/catalog/.spec.yml index ce41cde5f..e658906d9 100644 --- a/release/models/catalog/.spec.yml +++ b/release/models/catalog/.spec.yml @@ -1,4 +1,4 @@ -- name: openconfig-catalog +- name: openconfig-module-catalog build: - yang/catalog/openconfig-module-catalog.yang docs: diff --git a/release/models/firewall/.spec.yml b/release/models/firewall/.spec.yml index 8218d44e1..4ec8c3c7b 100644 --- a/release/models/firewall/.spec.yml +++ b/release/models/firewall/.spec.yml @@ -1,7 +1,12 @@ -- name: openconfig-firewall +- name: openconfig-fw-high-availability docs: - yang/firewall/openconfig-fw-high-availability.yang - - yang/firewall/openconfig-fw-link-monitoring.yang build: - yang/firewall/openconfig-fw-high-availability.yang run-ci: true +- name: openconfig-fw-link-monitoring + docs: + - yang/firewall/openconfig-fw-link-monitoring.yang + build: + - yang/firewall/openconfig-fw-link-monitoring.yang + run-ci: true diff --git a/release/models/interfaces/.spec.yml b/release/models/interfaces/.spec.yml index 2aa3746fa..6beda8549 100644 --- a/release/models/interfaces/.spec.yml +++ b/release/models/interfaces/.spec.yml @@ -13,6 +13,9 @@ - yang/platform/openconfig-platform-port.yang - yang/platform/openconfig-platform-transceiver.yang - yang/interfaces/openconfig-if-sdn-ext.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/optical-transport/openconfig-transport-line-common.yang + - yang/ate/openconfig-ate-intf.yang build: - yang/interfaces/openconfig-interfaces.yang - yang/interfaces/openconfig-if-ip.yang @@ -27,4 +30,7 @@ - yang/platform/openconfig-platform-port.yang - yang/platform/openconfig-platform-transceiver.yang - yang/interfaces/openconfig-if-sdn-ext.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/optical-transport/openconfig-transport-line-common.yang + - yang/ate/openconfig-ate-intf.yang run-ci: true diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 6460dff20..40c3d4f8a 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -6,10 +6,12 @@ - yang/network-instance/openconfig-evpn.yang - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang + - yang/segment-routing/openconfig-rsvp-sr-ext.yang build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang + - yang/segment-routing/openconfig-rsvp-sr-ext.yang run-ci: true - name: openconfig-network-instance-bgp-rib-augment build: diff --git a/release/models/optical-transport/.spec.yml b/release/models/optical-transport/.spec.yml index 672c664a9..d0b990b11 100644 --- a/release/models/optical-transport/.spec.yml +++ b/release/models/optical-transport/.spec.yml @@ -25,10 +25,14 @@ - yang/optical-transport/openconfig-transport-line-common.yang - yang/optical-transport/openconfig-wavelength-router.yang - yang/optical-transport/openconfig-channel-monitor.yang + build: + - yang/optical-transport/openconfig-wavelength-router.yang + run-ci: true +- name: openconfig-transport-line-connectivity + docs: - yang/optical-transport/openconfig-transport-line-connectivity.yang build: - yang/optical-transport/openconfig-transport-line-connectivity.yang - - yang/optical-transport/openconfig-wavelength-router.yang run-ci: true - name: openconfig-transport-line-protection docs: diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index 74b236942..61d202c4d 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -15,6 +15,10 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/system/openconfig-alarms.yang + - yang/optical-transport/openconfig-terminal-device.yang + - yang/optical-transport/openconfig-transport-line-common.yang build: - yang/platform/openconfig-platform.yang - yang/platform/openconfig-platform-common.yang @@ -30,4 +34,8 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/p4rt/openconfig-p4rt.yang + - yang/system/openconfig-alarms.yang + - yang/optical-transport/openconfig-terminal-device.yang + - yang/optical-transport/openconfig-transport-line-common.yang run-ci: true diff --git a/release/models/stp/.spec.yml b/release/models/stp/.spec.yml index c84de41dd..6b516c023 100644 --- a/release/models/stp/.spec.yml +++ b/release/models/stp/.spec.yml @@ -1,4 +1,4 @@ -- name: openconfig-stp +- name: openconfig-spanning-tree docs: - yang/stp/openconfig-spanning-tree-types.yang - yang/stp/openconfig-spanning-tree.yang diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index 3a8c0b185..7d27aa0cd 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -10,8 +10,8 @@ - yang/system/openconfig-aaa-tacacs.yang - yang/system/openconfig-aaa-radius.yang - yang/system/openconfig-alarms.yang - - yang/system/openconfig-messages.yang - yang/system/openconfig-license.yang + - yang/openflow/openconfig-openflow.yang build: - yang/system/openconfig-system.yang run-ci: true @@ -20,3 +20,8 @@ - yang/system/openconfig-system.yang - yang/system/openconfig-system-grpc.yang run-ci: true +- name: openconfig-messages + docs: + - yang/system/openconfig-messages.yang + build: + - yang/system/openconfig-messages.yang From aa99360c8bc877eb54ce195af0e883dfec970fc8 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 26 Jan 2023 10:48:21 -0800 Subject: [PATCH 107/372] add network-instance for logging server (#776) * add network-instance for logging server * clarify unspecified network-instance --- .../system/openconfig-system-logging.yang | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/release/models/system/openconfig-system-logging.yang b/release/models/system/openconfig-system-logging.yang index 1602cb1c6..299838908 100644 --- a/release/models/system/openconfig-system-logging.yang +++ b/release/models/system/openconfig-system-logging.yang @@ -10,7 +10,7 @@ module openconfig-system-logging { // import some basic types import openconfig-extensions { prefix oc-ext; } import openconfig-inet-types { prefix oc-inet; } - + import openconfig-network-instance { prefix oc-ni; } // meta organization "OpenConfig working group"; @@ -23,7 +23,13 @@ module openconfig-system-logging { "This module defines configuration and operational state data for common logging facilities on network systems."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.1"; + + revision "2022-12-29" { + description + "Add network-instance for remote logging servers"; + reference "0.4.1"; + } revision "2018-11-21" { description @@ -426,6 +432,13 @@ module openconfig-system-logging { "Source IP address for packets to the log server"; } + leaf network-instance { + type oc-ni:network-instance-ref; + description + "The network instance used to reach the log server. If no + instance is specified, DEFAULT_INSTANCE is used."; + } + leaf remote-port { type oc-inet:port-number; default 514; @@ -500,4 +513,4 @@ module openconfig-system-logging { // augment statements -} \ No newline at end of file +} From 53a632b518e3a2418b0649303339569f91391695 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 26 Jan 2023 22:09:26 -0800 Subject: [PATCH 108/372] Add openconfig-vlan-types to interface documentation generation. (#795) * (M) release/models/interfaces/.spec.yml - Add openconfig-vlan-types to the interfaces documentation build rule. VLAN types are referenced in the interfaces model such that it would be useful to have this in the documentation. --- release/models/interfaces/.spec.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/release/models/interfaces/.spec.yml b/release/models/interfaces/.spec.yml index 6beda8549..9535719e6 100644 --- a/release/models/interfaces/.spec.yml +++ b/release/models/interfaces/.spec.yml @@ -16,6 +16,7 @@ - yang/p4rt/openconfig-p4rt.yang - yang/optical-transport/openconfig-transport-line-common.yang - yang/ate/openconfig-ate-intf.yang + - yang/vlan/openconfig-vlan-types.yang build: - yang/interfaces/openconfig-interfaces.yang - yang/interfaces/openconfig-if-ip.yang From 5ca6a36fb57b09ab656fc608ac134550c9a43716 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Thu, 26 Jan 2023 22:50:28 -0800 Subject: [PATCH 109/372] Convert `.../bgp/rib/attr-sets/attr-set/as-path/as-segment` and `as4-segment` to keyed lists (#750) * Convert `.../bgp/rib/attr-sets/attr-set/as-path/as-segment` to a keyed list. --- .../rib/openconfig-rib-bgp-attributes.yang | 48 +++++++++++++++++-- .../openconfig-rib-bgp-shared-attributes.yang | 8 +++- .../openconfig-rib-bgp-table-attributes.yang | 8 +++- .../models/rib/openconfig-rib-bgp-tables.yang | 8 +++- release/models/rib/openconfig-rib-bgp.yang | 8 +++- 5 files changed, 72 insertions(+), 8 deletions(-) diff --git a/release/models/rib/openconfig-rib-bgp-attributes.yang b/release/models/rib/openconfig-rib-bgp-attributes.yang index f9577a5c4..3dbb0cc40 100644 --- a/release/models/rib/openconfig-rib-bgp-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-attributes.yang @@ -24,7 +24,13 @@ submodule openconfig-rib-bgp-attributes { attributes for use in BGP RIB tables."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description @@ -81,6 +87,16 @@ submodule openconfig-rib-bgp-attributes { description "Data for representing BGP AS-PATH attribute"; + leaf index { + type uint32; + description + "A unique ordering index starting from 0 identifying the position of + the AS-PATH segment in the list of segments. + + The index MUST start from 0 and end at (length-1), where length is the + number of segments in the list of AS-PATH segments."; + } + leaf type { type oc-bgpt:as-path-segment-type; description @@ -99,6 +115,7 @@ submodule openconfig-rib-bgp-attributes { "Top-level grouping for AS-PATH attribute data"; container as-path { + oc-ext:telemetry-atomic; description "Enclosing container for the list of AS path segments. @@ -117,8 +134,19 @@ submodule openconfig-rib-bgp-attributes { RFC 5065 - Autonomous System Confederations for BGP"; list as-segment { + key "index"; + description - "Unkeyed list of AS PATH segments"; + "List of AS-PATH segments"; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to the unique ordering index starting from 0 identifying + the position of the AS-PATH segment in the list of segments."; + } container state { config false; @@ -136,6 +164,7 @@ submodule openconfig-rib-bgp-attributes { "Top-level grouping for AS4-PATH attribute data"; container as4-path { + oc-ext:telemetry-atomic; description "This is the path encoded with 4-octet AS numbers in the optional transitive AS4_PATH attribute. @@ -148,13 +177,24 @@ submodule openconfig-rib-bgp-attributes { "RFC 6793 - BGP Support for Four-octet AS Number Space"; list as4-segment { + key "index"; + description - "Unkeyed list of AS PATH segments"; + "List of AS4-PATH segments"; + + leaf index { + type leafref { + path "../state/index"; + } + description + "Reference to the unique ordering index starting from 0 identifying + the position of the AS4-PATH segment in the list of segments."; + } container state { config false; description - "Opstate data for AS-PATH segments"; + "Opstate data for AS4-PATH segments"; uses bgp-as-path-attr-state; } diff --git a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang index 59508fe7b..80b20c718 100644 --- a/release/models/rib/openconfig-rib-bgp-shared-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-shared-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-shared-attributes { "This submodule contains structural data definitions for attribute sets shared across routes."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description diff --git a/release/models/rib/openconfig-rib-bgp-table-attributes.yang b/release/models/rib/openconfig-rib-bgp-table-attributes.yang index 1c373c40f..b2164e56a 100644 --- a/release/models/rib/openconfig-rib-bgp-table-attributes.yang +++ b/release/models/rib/openconfig-rib-bgp-table-attributes.yang @@ -21,7 +21,13 @@ submodule openconfig-rib-bgp-table-attributes { "This submodule contains common data definitions for data related to a RIB entry, or RIB table."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description diff --git a/release/models/rib/openconfig-rib-bgp-tables.yang b/release/models/rib/openconfig-rib-bgp-tables.yang index 04f3f0bbf..268c9cd20 100644 --- a/release/models/rib/openconfig-rib-bgp-tables.yang +++ b/release/models/rib/openconfig-rib-bgp-tables.yang @@ -30,7 +30,13 @@ submodule openconfig-rib-bgp-tables { "This submodule contains structural data definitions for BGP routing tables."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description diff --git a/release/models/rib/openconfig-rib-bgp.yang b/release/models/rib/openconfig-rib-bgp.yang index d2d5f2735..8e93838e0 100644 --- a/release/models/rib/openconfig-rib-bgp.yang +++ b/release/models/rib/openconfig-rib-bgp.yang @@ -67,7 +67,13 @@ module openconfig-rib-bgp { eligible for sending (advertising) to the neighbor after output policy rules have been applied."; - oc-ext:openconfig-version "0.8.1"; + oc-ext:openconfig-version "0.9.0"; + + revision "2022-12-20" { + description + "Convert as-segment and as4-segment to keyed lists."; + reference "0.9.0"; + } revision "2022-06-06" { description From b834e0756f324f50e6e53cd05522c0949101872c Mon Sep 17 00:00:00 2001 From: jnelson-sj <116230171+jnelson-sj@users.noreply.github.com> Date: Wed, 1 Feb 2023 11:35:14 -0800 Subject: [PATCH 110/372] Transceiver thresholds (#746) * Initial model for optical transceiver thresholds --- .../openconfig-platform-transceiver.yang | 109 +++++++++++++++++- 1 file changed, 108 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index c70a4fdda..a79585f3d 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -17,6 +17,7 @@ module openconfig-platform-transceiver { import openconfig-types { prefix oc-types; } import openconfig-extensions { prefix oc-ext; } import openconfig-yang-types { prefix oc-yang; } + import openconfig-alarm-types { prefix oc-alarm-types; } // meta @@ -65,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2023-01-12" { + description + "Add laser power and temperature thresholds"; + reference "0.10.0"; + } revision "2021-07-29" { description @@ -413,6 +420,44 @@ module openconfig-platform-transceiver { } } + grouping transceiver-threshold-top { + description + "Top-level grouping for transceiver alarm thresholds for + various sensors."; + + container thresholds { + description + "Enclosing container for transceiver alarm thresholds."; + + list threshold { + config false; + key "severity"; + description + "List of transceiver alarm thresholds, indexed by + alarm severity."; + + leaf severity { + config false; + type leafref { + path "../state/severity"; + } + description + "The severity applied to the group of thresholds. + An implementation's highest severity threshold + should be mapped to OpenConfig's `CRITICAL` + severity level."; + } + + container state { + config false; + description + "Operational alarm thresholds for the transceiver."; + + uses transceiver-threshold-state; + } + } + } + } grouping port-transceiver-config { description @@ -687,6 +732,67 @@ module openconfig-platform-transceiver { uses optical-power-state; } + grouping transceiver-threshold-state { + description + "Grouping for all alarm threshold configs for a particular + severity level."; + leaf severity { + type identityref { + base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY; + } + description + "The type of alarm to which the thresholds apply."; + } + leaf laser-temperature-upper { + description + "The upper temperature threshold for the laser temperature sensor."; + type decimal64 { + fraction-digits 1; + } + units celsius; + } + leaf laser-temperature-lower { + description + "The lower temperature threshold for the laser temperature sensor."; + type decimal64 { + fraction-digits 1; + } + units celsius; + } + leaf output-power-upper{ + description + "The upper power threshold for the laser output power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + leaf output-power-lower{ + description + "The lower power threshold for the laser output power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + leaf input-power-upper{ + description + "The upper power threshold for the laser input power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + leaf input-power-lower{ + description + "The lower power threshold for the laser input power."; + type decimal64 { + fraction-digits 2; + } + units dBm; + } + } + grouping port-transceiver-top { description "Top-level grouping for client port transceiver data"; @@ -715,6 +821,7 @@ module openconfig-platform-transceiver { // physical channels are associated with a transceiver // component uses physical-channel-top; + uses transceiver-threshold-top; } } From b3f70ed2dc374881f73be4e28e0a11b461fa5b86 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Wed, 1 Feb 2023 13:36:40 -0800 Subject: [PATCH 111/372] Hardware Resource Thresholds (#754) * Hardware Resource Thresholds Adding threshold configuration and threshold-exceeded state for platform resource utilization components. Co-authored-by: Darren Loher --- .../platform/openconfig-platform-common.yang | 35 +++++++++++++++++-- .../models/platform/openconfig-platform.yang | 8 ++++- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index bad9ce543..9bb8cd140 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.21.1"; + oc-ext:openconfig-version "0.22.0"; + + revision "2022-12-20" { + description + "Add threshold and threshold-exceeded for resource usage."; + reference "0.22.0"; + } revision "2022-12-19" { description @@ -128,6 +134,20 @@ submodule openconfig-platform-common { description "Resource name within the component."; } + + leaf used-threshold-upper { + type oc-types:percentage; + description + "The used percentage value (used / (used + free) * 100) that + when crossed will set utilization-threshold-exceeded to 'true'."; + } + + leaf used-threshold-upper-clear { + type oc-types:percentage; + description + "The used percentage value (used / (used + free) * 100) that when + crossed will set utilization-threshold-exceeded to 'false'."; + } } grouping platform-utilization-resource-state { @@ -171,8 +191,17 @@ submodule openconfig-platform-common { type oc-types:timeticks64; description "The timestamp when the high-watermark was last updated. The value - is the timestamp in nanoseconds relative to the Unix Epoch - (Jan 1, 1970 00:00:00 UTC)."; + is the timestamp in nanoseconds relative to the Unix Epoch + (Jan 1, 1970 00:00:00 UTC)."; + } + + leaf used-threshold-upper-exceeded { + type boolean; + description + "This value is set to true when the used percentage value + (used / (used + free) * 100) has crossed the used-threshold-upper for this + resource and false when the used percentage value has crossed the configured + used-threshold-upper-clear value for this resource."; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 58ae45412..4a6d874b7 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.21.1"; + oc-ext:openconfig-version "0.22.0"; + + revision "2022-12-20" { + description + "Add threshold and threshold-exceeded for resource usage."; + reference "0.22.0"; + } revision "2022-12-19" { description From e8aaa9d90af0d0ed50b0355b17796092ceb6cad2 Mon Sep 17 00:00:00 2001 From: yaonanliang <100883036+yaonanliang@users.noreply.github.com> Date: Fri, 3 Feb 2023 14:02:19 -0800 Subject: [PATCH 112/372] Remove the default of "enabled" of BGP AFI-SAFI to support BGP inheritance model (#774) * Remove the default of afi-safi "enabled" only for neighbor/peer-group, but keep it for global. * Update release/models/bgp/openconfig-bgp-common-multiprotocol.yang --------- Co-authored-by: Darren Loher Co-authored-by: Rob Shakir --- .../openconfig-bgp-common-multiprotocol.yang | 33 +++++++++++++++++-- .../bgp/openconfig-bgp-common-structure.yang | 9 ++++- release/models/bgp/openconfig-bgp-common.yang | 9 ++++- release/models/bgp/openconfig-bgp-global.yang | 13 ++++++-- .../models/bgp/openconfig-bgp-neighbor.yang | 9 ++++- .../models/bgp/openconfig-bgp-peer-group.yang | 9 ++++- release/models/bgp/openconfig-bgp.yang | 19 +++++++++-- 7 files changed, 89 insertions(+), 12 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 2c043548e..385e2008b 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description @@ -171,9 +178,9 @@ submodule openconfig-bgp-common-multiprotocol { } } - grouping bgp-common-mp-afi-safi-config { + grouping bgp-common-mp-global-afi-safi-config { description - "Configuration parameters used for all BGP AFI-SAFIs"; + "Configuration parameters used for all BGP global AFI-SAFIs"; leaf afi-safi-name { type identityref { @@ -185,6 +192,26 @@ submodule openconfig-bgp-common-multiprotocol { leaf enabled { type boolean; default false; + description + "This leaf indicates whether the AFI-SAFI is enabled for all + neighbors or groups."; + } + } + + grouping bgp-common-mp-afi-safi-config { + description + "Configuration parameters used for all BGP neighbors + or groups AFI-SAFIs"; + + leaf afi-safi-name { + type identityref { + base oc-bgp-types:AFI_SAFI_TYPE; + } + description "AFI,SAFI"; + } + + leaf enabled { + type boolean; description "This leaf indicates whether the AFI-SAFI is enabled for the neighbor or group"; diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 80b0afb42..6ab35ba12 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,14 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index e42a71edf..90d0b0d87 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 248ece65f..2157c236a 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,14 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description @@ -337,13 +344,13 @@ submodule openconfig-bgp-global { container config { description "Configuration parameters for the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; + uses bgp-common-mp-global-afi-safi-config; } container state { config false; description "State information relating to the AFI-SAFI"; - uses bgp-common-mp-afi-safi-config; + uses bgp-common-mp-global-afi-safi-config; uses bgp-common-state; } diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index c67b35d3a..ce798b395 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,14 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 5101b7812..d765e961a 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,14 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.1.0"; + oc-ext:openconfig-version "9.2.0"; + + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index a63a1e808..a0068f4cf 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -58,9 +58,24 @@ module openconfig-bgp { +-> neighbor +-> [ neighbor config ] +-> [ optional pointer to peer-group ] - +-> AFI / SAFI [ per-AFI overrides ]"; + +-> AFI / SAFI [ per-AFI overrides ] + + Most BGP features can be configured at multiple levels in the BGP + configuration level hierarchy. The common inheritance model allows + the more specific configuration (e.g. neighbor) to inherit from or + override the less specific configuration (e.g. global). + Leaf present at one level overrides leafs present at higher levels, + whereas leaf not present inherits its value from the leaf present + at the next higher level in the hierarchy."; + + oc-ext:openconfig-version "9.2.0"; - oc-ext:openconfig-version "9.1.0"; + revision "2022-12-12" { + description + "Removed the default of enabled leaf of AFI-SAFI + at neighbor/peer-group to support BGP inheritance model."; + reference "9.2.0"; + } revision "2022-05-21" { description From 910c10e7224c7280b5e9dc99f5744817b698e846 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 3 Feb 2023 15:09:37 -0800 Subject: [PATCH 113/372] Control plane access control list and QoS (#762) * Add control-plane QoS and ACL model. * (M) release/models/system/.spec.yml * (A) release/models/system/openconfig-system-controlplane.yang - Initial proposal for a model that covers control-plane policing (QoS policy) and ACL for control-plane protection. The proposal is to provide a central point of attachment under the system model. * (M) release/models/openconfig-system-controlplane.yang - remove reference to defined sets, the reference to an ACL allows explicit permit/deny actions. - add ingress and egress containers to cover ingress and egress ACLs. QoS policy is implemented only for ingress. * Move to list of ACL sets for compactness and commonality. * Update ACL model to have absolute reference. * Update leaf name to allow re-use of grouping. --------- Co-authored-by: Rob Shakir --- release/models/acl/openconfig-acl.yang | 17 +- .../models/qos/openconfig-qos-elements.yang | 8 +- .../models/qos/openconfig-qos-interfaces.yang | 15 +- .../models/qos/openconfig-qos-mem-mgmt.yang | 8 +- release/models/qos/openconfig-qos.yang | 8 +- release/models/system/.spec.yml | 1 + .../openconfig-system-controlplane.yang | 362 ++++++++++++++++++ 7 files changed, 410 insertions(+), 9 deletions(-) create mode 100644 release/models/system/openconfig-system-controlplane.yang diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index f22f88b56..eabbc761e 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,7 +34,14 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.1"; + oc-ext:openconfig-version "1.3.2"; + + revision "2023-01-29" { + description + "Update sequence-id reference to allow model to be re-used + outside of ACL context."; + reference "1.3.2"; + } revision "2022-12-20" { description @@ -578,10 +585,10 @@ module openconfig-acl { leaf sequence-id { type leafref { - path "/acl/acl-sets/" + - "acl-set[name=current()/../../../../set-name]" + - "[type=current()/../../../../type]/" + - "acl-entries/acl-entry/sequence-id"; + path "/oc-acl:acl/oc-acl:acl-sets/" + + "oc-acl:acl-set[oc-acl:name=current()/../../../../set-name]" + + "[oc-acl:type=current()/../../../../type]/" + + "oc-acl:acl-entries/oc-acl:acl-entry/oc-acl:sequence-id"; } description "Reference to an entry in the ACL set applied to an diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 9e90dec12..4e172cbe3 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index d1bb820d1..725f2f6b7 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description @@ -101,6 +107,13 @@ submodule openconfig-qos-interfaces { "Reference to match terms in the classifier"; } + uses qos-interface-classifier-match-counters-state; + } + + grouping qos-interface-classifier-match-counters-state { + description + "Grouping for counters relating to QoS classifier match terms."; + leaf matched-packets { type oc-yang:counter64; description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index b67e486f7..f2fe2c39d 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 2dd1aa421..c2f995f61 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-01-28" { + description + "Split groupings in interfaces for better leaf reuse."; + reference "0.6.1"; + } revision "2022-09-13" { description diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index 7d27aa0cd..b4009f87e 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -19,6 +19,7 @@ build: - yang/system/openconfig-system.yang - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-controlplane.yang run-ci: true - name: openconfig-messages docs: diff --git a/release/models/system/openconfig-system-controlplane.yang b/release/models/system/openconfig-system-controlplane.yang new file mode 100644 index 000000000..fee5fd728 --- /dev/null +++ b/release/models/system/openconfig-system-controlplane.yang @@ -0,0 +1,362 @@ +module openconfig-system-controlplane { + yang-version "1"; + + namespace "http://openconfig.net/yang/system-controlplane"; + prefix "oc-sys-copp"; + + import openconfig-extensions { + prefix oc-ext; + } + import openconfig-system { + prefix oc-sys; + } + import openconfig-acl { + prefix oc-acl; + } + import openconfig-qos { + prefix oc-qos; + } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state relating to + policies for traffic destined to the system's control-plane. + Particularly, it allows for mechanisms to: + - apply an ACL that forwards or drops traffic towards the control-plane. + - classify traffic that is destined to the control-plane according to + a QoS classifier. + - schedule traffic that has been forwarded towards the control-plane, + to allow for policies such as rate limits to be applied. + The configured policies apply generically to all control-planes that + exist within the system, and should be mapped to the internal interfaces + via which packets are forwarded to control-plane modules. + When a packet is received at an input interface - it is classified into a + forwarding group which drains to a specific queue. If this input mapping + is sufficient, the CPU-facing interface uses the specified scheduler + to determine how to drain queues. If more granular remapping is required + (e.g., to classify control-plane traffic more granularly), a user specifies + an alternate classifier that is used to reclassify traffic into + a new set of forwarding-groups (and hence queues) that can subsequently + be scheduled by the specified scheduler. + The specified control-plane ACL is applied to traffic received by the + control-plane of the system."; + + oc-ext:openconfig-version "0.1.0"; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + revision "2021-08-02" { + description + "Initial revision."; + reference + "0.1.0"; + } + + grouping system-controlplane-top { + description + "Top-level structural grouping for control-plane traffic policies."; + + container control-plane-traffic { + description + "Policies and configuration relating to the traffic destined towards + the system control-plane."; + + container ingress { + description + "Control-plane traffic parameters relating to ingress traffic. + This refers to traffic that is being received by the system's + control plane from external-to-the-controlplane sources."; + + uses system-controlplane-acl-common-top; + + container qos { + description + "Configuration and operational state relating to QoS policies + that are applied to control-plane traffic."; + + container classifier { + description + "Configuration and state parameters relating to the QoS + classifier that is applied to control plane traffic. A QoS + classifier - defined in /qos/classifiers specifies how traffic + is mapped to QoS queues. The classifier specified in this + container and corresponding state allows for traffic towards + the control-plane to be classified."; + + container config { + description + "Configuration parameters relating to QoS classifier + applied to match control plane traffic."; + uses system-controlplane-qos-classifier-config; + } + + container state { + config false; + description + "Operational state parameters relating to the QoS classifier + applied to match control plane traffic."; + uses system-controlplane-qos-classifier-config; + } + + container terms { + config false; + description + "Operational state and counters relating to the classifier + applied to control-plane traffic."; + + list term { + key "id"; + + description + "A list of the terms within the QoS classifier being + applied for control-plane traffic. Each term has + corresponding operational state parameters."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "Reference to the identifier for the classifier term."; + } + + container state { + config false; + description + "Operational state parameters relating to a term within + the applied control-plane classifier"; + + uses system-controlplane-qos-classifier-term-state; + uses oc-qos:qos-interface-classifier-match-counters-state; + } + } + } + } + + container scheduler-policy { + description + "Configuration and operational state relating to the QoS + scheduler policy that is applied to control-plane traffic. + The scheduler policy determines how traffic, classified by + the specified control-plane classifier is rate-limited towards + the control-plane. The scheduler policy is defined in + /qos/scheduler-policies."; + + container config { + description + "Configuration parameters relating to the scheduler-policy + that is to be applied control-plane traffic."; + + uses system-controlplane-qos-scheduler-config; + } + + container state { + config false; + description + "Operational state parameters relating to the scheduler policy + applied to the control-plane traffic."; + + uses system-controlplane-qos-scheduler-config; + } + + container scheduler-statistics { + config false; + description + "Operational state and counters relating to the + scheduler-policy applied to control plane traffic."; + + list scheduler { + key "sequence"; + description + "List of the schedulers that are part of the scheduler-policy + specified."; + + leaf sequence { + type leafref { + path "../state/sequence"; + } + description + "Reference to the sequence ID for the scheduler."; + } + + container state { + description + "Operational state parameters relating to the scheduler + policy."; + + uses system-controlplane-qos-scheduler-seq-state; + } + } + } + } + } + } + + container egress { + description + "Control-plane traffic parameters relating to egress traffic. + This refers to traffic that is sent by the system's control + plane to external-to-the-controlplane destinations."; + + uses system-controlplane-acl-common-top; + } + } + } + + grouping system-controlplane-acl-common-top { + description + "Common structural grouping for ACL configuration and state for + control plane traffic."; + + container acl { + description + "Configuration and operational state parameters relating to the + access control list applied to control-plane traffic."; + + list acl-set { + key "set-name type"; + + description + "List of the ACL that is to be applied in the specific ingress + or egress context. The key of the list specifies the type of + traffic to be matched, along with a reference to an ACL + configured in the OpenConfig ACL model within the /acl hierarchy."; + + leaf set-name { + type leafref { + path "../config/set-name"; + } + description + "Reference to the name of the ACL-set to be applied."; + } + + leaf type { + type leafref { + path "../config/type"; + } + description + "Reference to the type of the ACL-set to be applied."; + } + + container config { + description + "Configuration parameters relating to the ACL to be applied."; + + uses system-controlplane-common-acl-config; + } + + uses oc-acl:interface-acl-entries-top; + } + } + } + + grouping system-controlplane-common-acl-config { + description + "Grouping for ACL parameters relating to the system control-plane."; + + leaf set-name { + type leafref { + path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set/" + + "oc-acl:config/oc-acl:name"; + } + description + "Reference to the ACL to be applied to traffic + in the specified context (ingress or egress)."; + } + + leaf type { + type leafref { + path "/oc-acl:acl/oc-acl:acl-sets/oc-acl:acl-set" + + "[oc-acl:name=current()/../set-name]" + + "/oc-acl:config/oc-acl:type"; + } + description + "Reference to the ACL set type applied to traffic + in the specified context (ingress or egress)."; + } + } + + grouping system-controlplane-qos-classifier-config { + description + "Grouping for configuration parameters relating to QoS classifiers + for the system control-plane."; + + leaf name { + type leafref { + path "/oc-qos:qos/oc-qos:classifiers/oc-qos:classifier/" + + "oc-qos:config/oc-qos:name"; + } + description + "Reference to a classifier that is used to classify traffic + destined to the control-plane of the system. + This classifier determines how packets that match each terms + are classified into forwarding groups, and subsequently into + queues to be forwarded."; + } + } + + grouping system-controlplane-qos-classifier-term-state { + description + "Grouping for control-plane traffic specific leaves required for + each configuration term."; + + leaf id { + // Current location /system/control-plane/ingress/qos/classifier/ + // terms/term/state/id + type leafref { + path "/oc-qos:qos/oc-qos:classifiers/" + + "oc-qos:classifier[oc-qos:name=current()/../../../../config/name]" + + "/oc-qos:terms/oc-qos:term/oc-qos:config/oc-qos:id"; + } + description + "Reference to a term identifier within the configured control-plane + classifier."; + } + } + + grouping system-controlplane-qos-scheduler-config { + description + "Grouping for configuration parameters relating to the QoS scheduler + policy for control-plane traffic."; + + leaf name { + type leafref { + path "/oc-qos:qos/oc-qos:scheduler-policies/oc-qos:scheduler-policy/" + + "oc-qos:config/oc-qos:name"; + } + description + "Reference to a scheduler policy that determines rate limits, or + shaping of packets towards the control-plane."; + } + } + + grouping system-controlplane-qos-scheduler-seq-state { + description + "Grouping for operational state parameters relating to indivual + schedulers within the applied scheduler policy."; + + leaf sequence { + type leafref { + path "/oc-qos:qos/oc-qos:scheduler-policies/oc-qos:scheduler-policy" + + "[oc-qos:name=current()/../../../../config/name]" + + "/oc-qos:schedulers/oc-qos:scheduler/oc-qos:config/" + + "oc-qos:sequence"; + } + description + "Reference to a scheduler within the configured scheduler policy."; + } + + uses oc-qos:qos-scheduler-common-state; + } + + augment "/oc-sys:system" { + description + "Add control-plane configuration and state to the system model."; + + uses system-controlplane-top; + } +} From acd14524556aa4b95692558d0252cfa04c4c5ac5 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Fri, 3 Feb 2023 17:46:57 -0800 Subject: [PATCH 114/372] Vendor-specific control-plane traffic counters (#763) * Add vendor-specific control-plane queue counters * (M) doc/vendor_counter_guide.md - Updated guide on how to augment /components/component/integrated-circuit/control-plane/vendor * (M) release/models/platform/openconfig-platform-pipeline-counters.yang - Add support with a vendor container for queued/dropped packets/bytes - Add support for aggregate counters of each queued/dropped total packets/bytes --------- Co-authored-by: Rob Shakir Co-authored-by: Darren Loher --- doc/vendor_counter_guide.md | 72 ++++++++- ...openconfig-platform-pipeline-counters.yang | 144 +++++++++++++++++- 2 files changed, 209 insertions(+), 7 deletions(-) diff --git a/doc/vendor_counter_guide.md b/doc/vendor_counter_guide.md index 2fccac188..74739edff 100644 --- a/doc/vendor_counter_guide.md +++ b/doc/vendor_counter_guide.md @@ -2,7 +2,7 @@ **Contributors**: roland@arista.com -This document provides the guidelines for the vendor-specific portions of openconfig-pipeline-counters.yang. As implementations differ from vendor to vendor and platform to platform, a process of adding vendor-specific counters will be defined here. +This document provides the guidelines for the vendor-specific portions of openconfig-platform. As implementations differ from vendor to vendor and platform to platform, a process of adding vendor-specific counters will be defined here. ## Usage: Vendor-specific pipeline drop counter @@ -16,7 +16,7 @@ If these aggregate counters are implemented, the sum of the vendor-specific coun If an integrated-circuit has a vendor-specific packet drop counter which cannot differentiate between packet-processing, congestion and adverse drops, then that counter should still be exposed as a vendor-specific packet-processing counter with an appropriate description in the vendor's augmentation. The `packet-processing-aggregate` counter should be incremented in this scenario as expected above. Such a counter is undesirable as it means this hardware cannot meet the goal for identifying adverse packet drops in the ASIC, but it is better not to ruin the fidelity of the `adverse-aggregate` drop counter with noise of intended packet drops. -## Example +## Example: Vendor-specific pipeline drop counter This following is a sample augmentation file. @@ -121,3 +121,71 @@ module: openconfig-platform +--ro acme-ppc:packet-processing-reason-counter-b? oc-yang:counter64 +--ro acme-ppc:packet-processing-reason-counter-c? oc-yang:counter64 ``` + +## Usage: Vendor-specific control-plane traffic counter + +Each implementor should augment `/components/component/integrated-circuit/control-plane-traffic/vendor` with their own `//state` containers. The naming of the platform container may consist of the platform name, ASIC family, or a combination of both platform and ASIC family. Within the state container, it should define vendor-specific counter containers. Each control-plane traffic counter may use the utility grouping `oc-ic:control-plane-traffic-vendor-counters` that provides the queued/dropped leaves. For each counters augmented into `//state`, the sum of the counters should be included in the values of the aggregate leaves: + +- Counters within `.../control-plane-traffic/vendor///state//queued` aggregate into `.../control-plane-traffic/state/total-queued` +- Counters within `.../control-plane-traffic/vendor///state//queued-bytes` aggregate into `.../control-plane-traffic/state/total-queued-bytes` +- Counters within `.../control-plane-traffic/vendor///state//dropped` aggregate into `.../control-plane-traffic/state/total-dropped` +- Counters within `.../control-plane-traffic/vendor///state//dropped-bytes` aggregate into `.../control-plane-traffic/state/total-dropped-bytes` + +If these aggregate counters are implemented, the sum of the vendor-specific counters must match the aggregate counters. + +## Example: Vendor-specific pipeline drop counter + +This following is a sample augmentation file. + +- Vendor: Acme +- Platform: AsicFamily + +### Example YANG Augmentation + +release/platform/acme-asicfamily-control-plane-traffic-augments.yang + +```yang +grouping acme-asicfamily-control-plane-traffic-counters { + container queue-counter-a { + uses oc-ppc:control-plane-traffic-vendor-counters; + } + + container queue-counter-b { + uses oc-ppc:control-plane-traffic-vendor-counters; + } + + container queue-counter-c { + uses oc-ppc:control-plane-traffic-vendor-counters; + } +} + +augment "/components/component/integrated-circuit/pipeline-counters/control-plane-traffic/vendor" { + container acme { + container asic-family { + container state { + uses acme-asicfamily-control-plane-traffic-counters; + } + } + } +} +``` + +Note: Namespaces omitted from `augment ` for brevity + +### Example pyang tree + +```text +module: openconfig-platform + +--rw components + +--rw component* [name] + +--rw integrated-circuit + +--ro oc-ppc:pipeline-counters + +--ro oc-ppc:control-plane-traffic + +--ro oc-ppc:vendor + +--ro acme-ppc:acme + +--ro acme-ppc:asic-family + +--ro acme-ppc:state + +--ro acme-ppc:queue-counter-a + +--ro acme-ppc:queue-counter-b + +--ro acme-ppc:queue-counter-c +``` diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index eae57ffb5..e4bad82a6 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.4.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-02-03" { + description + "Add vendor-specific control-plane traffic queue counters"; + reference "0.4.0"; + } + revision "2022-12-01" { description "Add uRPF aggregate drop counter."; @@ -416,6 +422,8 @@ module openconfig-platform-pipeline-counters { } } } + + uses pipeline-control-plane-top; } } @@ -450,7 +458,6 @@ module openconfig-platform-pipeline-counters { "Outgoing bytes towards the line interfaces or fabric from the integrated-circuit interface subsystem block."; } - } grouping pipeline-counters-common-high-low-packets { @@ -1122,7 +1129,7 @@ module openconfig-platform-pipeline-counters { parts where packets may be dropped at any point in time. Providing specific hardware counters provides better visibility into traffic drop. - The recommended useage of this container is to create an augment at + The recommended usage of this container is to create an augment at .../pipeline-counter/drop/vendor that contains additional vendor/platform specific containers. @@ -1135,7 +1142,8 @@ module openconfig-platform-pipeline-counters { } }"; - reference "doc/vendor_counter_guide.md"; + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; } } @@ -1148,7 +1156,8 @@ module openconfig-platform-pipeline-counters { packet-processing should still be exposed as a vendor-specific, packet-processing counter."; - reference "doc/vendor_counter_guide.md"; + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; container adverse { description @@ -1197,6 +1206,131 @@ module openconfig-platform-pipeline-counters { } } + grouping control-plane-traffic-counters-state { + description + "Control plane traffic counter state grouping."; + + leaf queued-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters where the switch has enqueued + traffic related to the control-plane."; + } + + leaf queued-bytes-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters in bytes where the switch has + enqueued traffic related to the control-plane."; + } + + leaf dropped-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters where the switch has dropped + traffic related to the control-plane."; + } + + leaf dropped-bytes-aggregate { + type oc-yang:counter64; + description + "This captures the aggregation of all counters in bytes where the switch has + dropped traffic related to the control-plane."; + } + } + + grouping control-plane-traffic-vendor-counters { + description + "A utility grouping for vendors to use when augmenting the vendor-specific + control-plane traffic container."; + + leaf queued { + type oc-yang:counter64; + description + "This counter counts the number of packets enqueued. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/queued-aggregate."; + } + + leaf queued-bytes { + type oc-yang:counter64; + description + "This counter counts the number of bytes enqueued. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/queued-bytes-aggregate."; + } + + leaf dropped { + type oc-yang:counter64; + description + "This counter counts the number of packets dropped. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/dropped-aggregate."; + } + + leaf dropped-bytes { + type oc-yang:counter64; + description + "This counter counts the number of bytes dropped. + + This counter should contribute to the total aggregate of + .../pipeline-counters/control-plane-traffic/state/dropped-bytes-aggregate."; + } + } + + grouping pipeline-control-plane-top { + description + "Top-level structural grouping for control-plane traffic counters."; + + container control-plane-traffic { + description + "Counters that are related to traffic destined to the control-plane."; + + container state { + config false; + description + "State container for control-plane traffic counters."; + + uses control-plane-traffic-counters-state; + } + + container vendor { + description + "Counters within these containers are defined and augmented by vendors. + As each ASIC and vendor has different implementation and internal + parts where packets may be dropped at any point in time. Providing + vendor-specific counters provides better visibility into control-plane traffic. + + The recommended usage of this container is to create an augment at + .../pipeline-counter/control-plane-traffic/vendor that contains additional + vendor/platform specific containers. + + e.g. + augment /components/component/integrated-circuit/pipeline-counter/control-plane-traffic/vendor { + container { + container { + container state { + leaf counter-a { + uses control-plane-traffic-vendor-counters; + } + + leaf counter-b { + uses control-plane-traffic-vendor-counters; + } + } + } + } + }"; + + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; + } + } + } + augment "/oc-platform:components/oc-platform:component/oc-platform:integrated-circuit" { description "Add operational state data that corresponds to sub-blocks of an integrated From 0c9fb6b0ab96fdd96bb9e88365abe11e51a11e62 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 8 Feb 2023 06:41:36 -0800 Subject: [PATCH 115/372] Add a clarification and examples for port breakout mode. (#791) * Add a clarification and examples for port breakout mode. * (M) release/models/platform/openconfig-platform-port.yang - Add clarification that a physical channel is defined to be an electrical channel. - Add examples for the existing cases described in the model, as we as a simple 400G->100G breakout case. --- .../platform/openconfig-platform-port.yang | 102 ++++++++++++++++-- 1 file changed, 91 insertions(+), 11 deletions(-) diff --git a/release/models/platform/openconfig-platform-port.yang b/release/models/platform/openconfig-platform-port.yang index b78bf7903..68f5eabd5 100644 --- a/release/models/platform/openconfig-platform-port.yang +++ b/release/models/platform/openconfig-platform-port.yang @@ -24,7 +24,14 @@ module openconfig-platform-port { "This module defines data related to PORT components in the openconfig-platform model"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "1.0.0"; + + revision "2023-01-19" { + description + "Add clarification of the definition of a physical channel, and + example configurations."; + reference "1.0.0"; + } revision "2021-10-01" { description @@ -129,7 +136,10 @@ module openconfig-platform-port { to the interfaces in this breakout group. This leaf need not be set if there is only one breakout group where all the interfaces are of equal speed and have equal number - of physical channels"; + of physical channels. + + The physical channels referred to by this leaf are + electrical channels towards the transceiver."; } } @@ -154,24 +164,94 @@ module openconfig-platform-port { interfaces of different speeds and different number of physical channels, it can breakout a 400G OSFP port with 8 physical channels (with support for 25G NRZ, 50G PAM4 - and 100G PAM4) in the following configuration: - - 100G + 100G + 200G -> 1 interface with 2 physical channels - and 1 interface with 4 physical channels and 1 interface with + and 100G PAM4) into mixed speed interfaces. Particularly, to + break out into two 100G ports with different modulation, and a 200G + port, a user must configure 1 interface with 2 physical channels + 1 interface with 4 physical channels and 1 interface with 2 physical channels. With this configuration the interface in 1st breakout group would use 50G PAM4 modulation, interface in 2nd breakout group would use 25G NRZ modulation and the interface in 3rd breakout group would use 100G PAM4 modulation This configuration would result in 3 entries in the breakout - groups list. + groups list. The example configuration for this case is shown below: + + { + \"groups\": { + \"group\": [ + { + \"config\": { + \"breakout-speed\": \"SPEED_100GB\", + \"index\": 0, + \"num-breakouts\": 1, + \"num-physical-channels\": 2 + }, + \"index\": 0 + }, + { + \"config\": { + \"breakout-speed\": \"SPEED_100GB\", + \"index\": 1, + \"num-breakouts\": 1, + \"num-physical-channels\": 4 + }, + \"index\": 1 + }, + { + \"config\": { + \"breakout-speed\": \"SPEED_200GB\", + \"index\": 2, + \"num-breakouts\": 1, + \"num-physical-channels\": 2 + }, + \"index\": 2 + } + ] + } + } When a device does not have the capability to break a port into interfaces of different speeds and different number of - physical channels, it would breakout a 400G OSFP port with - 8 physical channels in the following configuration: + physical channels, in order to breakout a 400G OSFP port with + 8 physical channels into 50G breakout ports it would use 8 interfaces + with 1 physical channel each. This would result in 1 entry in the + breakout groups list. The example configuration for this case is + shown below: + + { + \"groups\": { + \"group\": [ + { + \"config\": { + \"breakout-speed\": \"SPEED_50GB\", + \"index\": 0, + \"num-breakouts\": 8, + \"num-physical-channels\": 1 + }, + \"index\": 0 + } + ] + } + } - 50G -> 8 interfaces with 1 physical channel each, this would - result in 1 entry in the breakout groups list."; + Similarly, if a 400G-DR4 interface (8 electrical channels at 50Gbps) + is to be broken out into 4 100Gbps ports, the following configuration + is used: + + { + \"groups\": { + \"group\": [ + { + \"config\": { + \"breakout-speed\": \"SPEED_100GB\", + \"index\": 0, + \"num-breakouts\": 4, + \"num-physical-channels\": 2 + }, + \"index\": 0 + } + ] + } + }"; list group { key "index"; From e786f188883a685d9a4feefecaa543ca6422a2b7 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 8 Feb 2023 10:54:54 -0700 Subject: [PATCH 116/372] Remove incorrect QoS output interface-ref (#756) * Remove incorrect QoS output interface-ref * (M) release/models/qos/openconfig-qos.yang * (M) release/models/qos/openconfig-qos-elements.yang * (M) release/models/qos/openconfig-qos-interfaces.yang * (M) release/models/qos/openconfig-qos-mem-mgmt.yang - Remove incorrect interface-ref under interfaces output container --------- Co-authored-by: Rob Shakir --- release/models/qos/openconfig-qos-elements.yang | 9 ++++++++- release/models/qos/openconfig-qos-interfaces.yang | 9 +++++++-- release/models/qos/openconfig-qos-mem-mgmt.yang | 8 +++++++- release/models/qos/openconfig-qos.yang | 8 +++++++- 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 4e172cbe3..c8967fe46 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,14 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.6.1"; + + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 725f2f6b7..8b27c3b02 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description @@ -877,7 +883,6 @@ submodule openconfig-qos-interfaces { uses qos-interface-output-state; } - uses oc-if:interface-ref; uses qos-interface-classifier-top; uses qos-interface-queue-root-top; uses qos-interface-scheduler-top; diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index f2fe2c39d..d1d84130f 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index c2f995f61..923815d65 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.6.1"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-02-08" { + description + "Remove incorrect output placement of interface-ref"; + reference "0.7.0"; + } revision "2023-01-28" { description From d9701d1fa0f50dfb56818f5b440d1ef922051108 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 8 Feb 2023 10:53:28 -0800 Subject: [PATCH 117/372] Add health variables to components model. (#504) * Add component health indicators. * Add telemetry-on-change annotation to health variables. * (A) release/models/platform/openconfig-platform-healthz.yang - Per the definition of the gnoi.Healthz service in github.com/openconfig/gnoi - indicate whether a component is healthy or unhealthy following a check on the system. This allows the system to signal to external subscribers that the component is not in a healthy state such that further actions can be taken. - Add extension indicating that the health variables should be sent based on when they change. --------- Co-authored-by: Roman Dodin --- release/models/platform/.spec.yml | 2 + .../platform/openconfig-platform-healthz.yang | 130 ++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 release/models/platform/openconfig-platform-healthz.yang diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index 61d202c4d..59ffb1c76 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -15,6 +15,7 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/platform/openconfig-platform-healthz.yang - yang/p4rt/openconfig-p4rt.yang - yang/system/openconfig-alarms.yang - yang/optical-transport/openconfig-terminal-device.yang @@ -34,6 +35,7 @@ - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang - yang/platform/openconfig-platform-controller-card.yang + - yang/platform/openconfig-platform-healthz.yang - yang/p4rt/openconfig-p4rt.yang - yang/system/openconfig-alarms.yang - yang/optical-transport/openconfig-terminal-device.yang diff --git a/release/models/platform/openconfig-platform-healthz.yang b/release/models/platform/openconfig-platform-healthz.yang new file mode 100644 index 000000000..48f747f8a --- /dev/null +++ b/release/models/platform/openconfig-platform-healthz.yang @@ -0,0 +1,130 @@ +module openconfig-platform-healthz { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/platform/healthz"; + + prefix "oc-platform-healthz"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-types { prefix oc-types; } + import openconfig-platform { prefix oc-platform; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This model defines health-related variables for components + within the openconfig-platform model (which defines the + the /components hierarchy). It is designed to be used in + conjunction with the gNOI Healthz service (see + https://github.com/openconfig/gnoi/blob/main/healthz/README.md). + + The health variables included in this model are streamed via + telemetry interfaces, where gNOI.Healthz is used to retrieve + further diagnostic and debugging informaton from a network + device."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-01-23" { + description + "Initial healthz variable revision"; + reference "0.1.0"; + } + + grouping platform-health-top { + description + "Grouping containing health-related parameters."; + + container healthz { + description + "The health of the component. The paramaters within this + container indicate the status of the component beyond whether + it is operationally up or down. When a signal is received + that a component is in an unhealthy state the gNOI.Healthz + service can be used to retrieve further diagnostic information + relating to the component. + + The contents of this directory relate only to the specific + component that it is associated with. In the case that child + components become unhealthy and this causes a parent component + to be unhealthy, the new unhealthy status should be reported at + both components, such that an interested system can take the + relevant actions (e.g., retrieve the Healthz output, or + apply mitigation actions)."; + reference + "https://github.com/openconfig/gnoi/tree/main/healthz"; + + container state { + config false; + description + "Operational state parameters relating to component health."; + uses platform-health-state; + } + } + } + + grouping platform-health-state { + description + "Operational state parameters relating to a platform component's + health."; + + leaf status { + type enumeration { + enum UNSPECIFIED { + description + "The component's health status has not yet been checked + by the system."; + } + + enum HEALTHY { + description + "The component is in a HEALTHY state, and is operating + within the expected parameters."; + } + + enum UNHEALTHY { + description + "The component is in a unhealthy state, it is not + performing the function expected of it."; + } + } + description + "The status of the component, indicating its current health."; + oc-ext:telemetry-on-change; + } + + leaf last-unhealthy { + type oc-types:timeticks64; + description + "The time at which the component as last observed to be unhealthy + represented as nanoseconds since the Unix epoch. Unhealthy is defined + as the component being in a state other than HEALTHY."; + oc-ext:telemetry-on-change; + } + + leaf unhealthy-count { + type uint64; + description + "The number of status checks that have determined this component + to be in an unhealthy state. This counter should be incremented + when the component transitions from the HEALTHY to UNHEALTHY + state such that the value reflects the number of times the + component has become unhealthy."; + oc-ext:telemetry-on-change; + } + } + + augment "/oc-platform:components/oc-platform:component" { + description + "Augment healthz information into the /components/component hierarchy."; + + uses platform-health-top; + } +} From 6ca2eed2f5176ab12174cfb5236c1246b9bee377 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Fri, 10 Feb 2023 15:42:06 -0800 Subject: [PATCH 118/372] Fix linting issues in openconfig-platform-transceiver.yang (#810) --- .../openconfig-platform-transceiver.yang | 36 +++++++++++-------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index a79585f3d..cd460ce3b 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.10.1"; + + revision "2023-02-10" { + description + "Fixing linting issues."; + reference "0.10.1"; + } revision "2023-01-12" { description @@ -430,17 +436,17 @@ module openconfig-platform-transceiver { "Enclosing container for transceiver alarm thresholds."; list threshold { - config false; key "severity"; + config false; description "List of transceiver alarm thresholds, indexed by alarm severity."; leaf severity { - config false; type leafref { path "../state/severity"; } + config false; description "The severity applied to the group of thresholds. An implementation's highest severity threshold @@ -744,52 +750,52 @@ module openconfig-platform-transceiver { "The type of alarm to which the thresholds apply."; } leaf laser-temperature-upper { - description - "The upper temperature threshold for the laser temperature sensor."; type decimal64 { fraction-digits 1; } units celsius; + description + "The upper temperature threshold for the laser temperature sensor."; } leaf laser-temperature-lower { - description - "The lower temperature threshold for the laser temperature sensor."; type decimal64 { fraction-digits 1; } units celsius; + description + "The lower temperature threshold for the laser temperature sensor."; } leaf output-power-upper{ - description - "The upper power threshold for the laser output power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The upper power threshold for the laser output power."; } leaf output-power-lower{ - description - "The lower power threshold for the laser output power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The lower power threshold for the laser output power."; } leaf input-power-upper{ - description - "The upper power threshold for the laser input power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The upper power threshold for the laser input power."; } leaf input-power-lower{ - description - "The lower power threshold for the laser input power."; type decimal64 { fraction-digits 2; } units dBm; + description + "The lower power threshold for the laser input power."; } } From 268f8390f0aae5732c14ef65d3288f9e96b02f70 Mon Sep 17 00:00:00 2001 From: Likai Liu Date: Tue, 14 Feb 2023 15:10:04 -0500 Subject: [PATCH 119/372] openconfig-transport-types.yang add ETH_100GBASE_DR PMD type (#808) * Add ETH_100GBASE_DR (500m, interops with 100G-FR) --- .../openconfig-transport-types.yang | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index a596ba13e..494c67216 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.17.1"; + oc-ext:openconfig-version "0.18.1"; + + revision "2023-02-08" { + description + "Add ETH_100GBASE_DR PMD type"; + reference "0.18.1"; + } revision "2022-12-05" { description @@ -1051,6 +1057,11 @@ module openconfig-transport-types { description "Ethernet compliance code: 100GBASE_FR"; } + identity ETH_100GBASE_DR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_DR"; + } + identity ETH_400GBASE_ZR { base ETHERNET_PMD_TYPE; description "Ethernet compliance code: 400GBASE_ZR"; From 2de10a479bd0f537109108fa12bc3790aac01548 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 16 Feb 2023 22:07:06 -0800 Subject: [PATCH 120/372] Add support for AND/OR for flags; built-in flag match criteria. (#796) * Add support for AND/OR for flags; built-in flag match criteria. * (M) release/models/acl/openconfig-packet-match.yang - Forked from PR #758 by @sourcequench. - Adds support for a details match mode that allows explicit flags or builtin aliases to be used as a transport details match criteria. - Adds support for an ANY/ALL match specification for flags. - Adds support for builtins like 'TCP_ESTABLISHED' that are commonly supported. --- .../models/acl/openconfig-packet-match.yang | 99 ++++++++++++++++++- 1 file changed, 96 insertions(+), 3 deletions(-) diff --git a/release/models/acl/openconfig-packet-match.yang b/release/models/acl/openconfig-packet-match.yang index 4b87cdea1..a1fcc88ac 100644 --- a/release/models/acl/openconfig-packet-match.yang +++ b/release/models/acl/openconfig-packet-match.yang @@ -28,7 +28,15 @@ module openconfig-packet-match { field is omitted from a match expression, the effect is a wildcard ('any') for that field."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2023-01-27" { + description + "Update the mechanism to match detailed transport flags, + adding means for AND/OR in the explicitly specified flags + and commonly supported match aliases."; + reference "2.0.0"; + } revision "2022-06-01" { description @@ -462,12 +470,97 @@ module openconfig-packet-match { to match the destination port"; } - leaf-list tcp-flags { + leaf detail-mode { + type enumeration { + enum EXPLICIT { + description + "Specifies that the mode for matching details at the transport + layer is to explicitly match transport flags."; + } + enum BUILTIN { + description + "Specifies that the mode for matching details at the transport + layer is to using implementation built-ins which may map to + multiple flags."; + } + } + description + "Mode that is used for matching detailed fields at the transport + layer. When EXPLICIT is specified, the implementation should + match based on the explicit flags that are specified in the + corresponding leaf. When BUILTIN is specified, the implementation + must expand the contents of the corresponding leaf to the flags + and/or fields that match the pre-defined built-in values."; + } + + leaf explicit-detail-match-mode { + type enumeration { + enum ANY { + description + "Matches of the explicit-detail-flags field are treated as + an OR between the values in the list."; + } + enum ALL { + description + "Matches of the explicit-details-flags field are treated + as an AND of the values in the list."; + } + } + description + "Specifies how the contents of the explicit-details-flags list + are to be treated. ANY implies that any of the flags may match, + where ALL indicates that all the flags must be matched."; + when "../detail-mode = 'EXPLICIT'" { + description + "This leaf is only valid when the mode for matches is specified to + be explicit."; + } + } + + leaf-list explicit-tcp-flags { type identityref { base oc-pkt-match-types:TCP_FLAGS; } description - "List of TCP flags to match"; + "An explicit list of the TCP flags that are to be matched. The + mechanism for the match is specified by the explicit-detail-match-mode + leaf."; + when "../detail-mode = 'EXPLICIT'" { + description + "This leaf is only valid when the mode for matches is specified to + be explicit."; + } + } + + leaf builtin-detail { + type enumeration { + enum TCP_INITIAL { + description + "Matches the first packet of a TCP session based on a packet + not having the ACK flag set, and having the SYN flag set."; + } + enum TCP_ESTABLISHED { + description + "Matches an established TCP session based on a packet having + the ACK or RST flags set. This does not match the first + packet."; + } + enum FRAGMENT { + description + "Matches non-zero values of the fragment-offset field, indicating + this packet is a follow up to a fragmented datagram."; + } + } + description + "Specifies a built-in (alias) for a match condition that matches + multiple flags, or specifies particular logic as to the flag matches + to be implemented. This leaf is only valid when the detail-match-mode + leaf is BUILTIN."; + when "../detail-mode = 'BUILTIN'" { + description + "This leaf is only valid when the mode for matches is specified to + be builtin."; + } } } From 9182a9baa9c77af93d73e77733316decb7807c63 Mon Sep 17 00:00:00 2001 From: steve ulrich Date: Fri, 17 Feb 2023 11:47:52 -0600 Subject: [PATCH 121/372] modify /interfaces/interface/loopback-mode to allow specification of loopback-mode-type (#731) * changed loopback-mode from boolean to optical-types:loopback modes which define the network vs. local facing loopback modes. --- .../interfaces/openconfig-interfaces.yang | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index a91d43980..e6f061746 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -12,6 +12,7 @@ module openconfig-interfaces { import openconfig-yang-types { prefix oc-yang; } import openconfig-types { prefix oc-types; } import openconfig-extensions { prefix oc-ext; } + import openconfig-transport-types { prefix oc-opt-types; } // meta organization "OpenConfig working group"; @@ -50,7 +51,13 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "3.0.0"; + + revision "2022-10-25" { + description + "change loopback-mode to align with available modes"; + reference "3.0.0"; + } revision "2021-04-06" { description @@ -390,12 +397,11 @@ module openconfig-interfaces { } leaf loopback-mode { - type boolean; - default false; + type oc-opt-types:loopback-mode-type; description - "When set to true, the interface is logically looped back, - such that packets that are forwarded via the interface - are received on the same interface."; + "Sets the loopback type on the interface. Setting the + mode to something besides NONE activates the loopback in + the specified mode."; } uses interface-common-config; From 839d68f61d0d93eb9843bafe6ce9465a1249b73d Mon Sep 17 00:00:00 2001 From: frank feng Date: Sat, 18 Feb 2023 03:29:16 +0800 Subject: [PATCH 122/372] add isis max-ecmp-paths for address family (#777) * Change Scope Add isis max-ecmp-paths for address family. --- release/models/isis/openconfig-isis-lsp.yang | 8 ++++++- .../models/isis/openconfig-isis-routing.yang | 21 ++++++++++++++++++- release/models/isis/openconfig-isis.yang | 8 ++++++- 3 files changed, 34 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 2796a79ab..2839cab52 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-04" { + description + "Add max ecmp paths for address family."; + reference "1.2.0"; + } revision "2022-09-20" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 7b045b613..16ed143de 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-04" { + description + "Add max ecmp paths for address family."; + reference "1.2.0"; + } revision "2022-09-20" { description @@ -249,6 +255,17 @@ submodule openconfig-isis-routing { description "ISIS metric value(default=10)."; } } + grouping isis-ecmp-config { + description + "This grouping defines ISIS ecmp configuration."; + + leaf max-ecmp-paths { + type uint8; + description + "ISIS max-paths count."; + } + + } grouping isis-afi-safi-list { description @@ -284,6 +301,7 @@ submodule openconfig-isis-routing { uses isis-afi-safi-config; uses isis-metric-config; uses rt-admin-config; + uses isis-ecmp-config; } container state { @@ -294,6 +312,7 @@ submodule openconfig-isis-routing { uses isis-afi-safi-config; uses isis-metric-config; uses rt-admin-config; + uses isis-ecmp-config; } uses isis-mt-list; diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index e1601c77d..53f81b0c8 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-01-04" { + description + "Add max ecmp paths for address family."; + reference "1.2.0"; + } revision "2022-09-20" { description From b4d513d9774949a6fdcedfceb616beb2ea7460d2 Mon Sep 17 00:00:00 2001 From: Donald Hunter Date: Fri, 17 Feb 2023 23:04:06 +0000 Subject: [PATCH 123/372] network-instance - add prefixes to identity values in when statements (#804) * net-inst/route-limits - add namespace prefix to when statement * netinst/connection-points - add namespace prefix to when statements --- .../openconfig-network-instance-l2.yang | 8 +++++++- .../openconfig-network-instance.yang | 16 +++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index f15f747ae..73f24045d 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.0"; + oc-ext:openconfig-version "4.0.1"; + + revision "2023-02-07" { + description + "Add prefixes to identity values in when statements"; + reference "4.0.1"; + } revision "2022-12-21" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 42de768f8..41b2705d3 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.0"; + oc-ext:openconfig-version "4.0.1"; + + revision "2023-02-07" { + description + "Add prefixes to identity values in when statements"; + reference "4.0.1"; + } revision "2022-12-21" { description @@ -526,7 +532,7 @@ module openconfig-network-instance { } uses oc-ni-l3:l3ni-route-limit-structural { - when "./config/type = 'L3VRF' or ./config/type = 'L2L3'" { + when "./config/type = 'oc-ni-types:L3VRF' or ./config/type = 'oc-ni-types:L2L3'" { description "Layer 3 VRF or L2/L3 instances can have route limits applied. This is not supported for the default instance."; @@ -684,7 +690,7 @@ module openconfig-network-instance { } container local { - when "../config/type = 'LOCAL'" { + when "../config/type = 'oc-ni-types:LOCAL'" { description "Only include the local configuration when the endpoint is specified to be local to @@ -712,7 +718,7 @@ module openconfig-network-instance { } container remote { - when "../config/type = 'REMOTE'" { + when "../config/type = 'oc-ni-types:REMOTE'" { description "Only include the remote configuration when the endpoint is specified to be remote to @@ -739,7 +745,7 @@ module openconfig-network-instance { } } container vxlan { - when "../config/type = 'VXLAN'" { + when "../config/type = 'oc-ni-types:VXLAN'" { description "Only include the vxlan configuration when the endpoint is specified to be vxlan"; From bf3876033e1d308516e6825d485258c1dc4b2199 Mon Sep 17 00:00:00 2001 From: aredmon8551 <87078055+aredmon8551@users.noreply.github.com> Date: Fri, 17 Feb 2023 19:16:37 -0500 Subject: [PATCH 124/372] Add support for defining a queue identifier under queues. (#772) * Add support for defining a queue identifier under queues. * (M) qos/openconfig-qos-interfaces.yang * (M) qos/openconfig-qos-elements.yang * (M) qos/openconfig-qos.yang --- release/models/qos/openconfig-qos-elements.yang | 13 ++++++++++++- release/models/qos/openconfig-qos-interfaces.yang | 8 +++++++- release/models/qos/openconfig-qos-mem-mgmt.yang | 8 +++++++- release/models/qos/openconfig-qos.yang | 8 +++++++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index c8967fe46..93a6fbfcc 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,8 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; + oc-ext:openconfig-version "0.8.0"; - oc-ext:openconfig-version "0.7.0"; + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description @@ -573,6 +578,12 @@ submodule openconfig-qos-elements { description "User-defined name of the queue"; } + leaf queue-id { + type uint8; + description + "An optional identifier which may be required by some hardware to map + the named queue to a hardware queue"; + } } grouping qos-queue-state { diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 8b27c3b02..7552dc65b 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index d1d84130f..5f777d082 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 923815d65..70622500f 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-02-17" { + description + "Add queue identifier."; + reference "0.8.0"; + } revision "2023-02-08" { description From 78498dab16cb9f3d593ecb3a5b9abb94d4b0585c Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 21 Feb 2023 20:58:51 -0800 Subject: [PATCH 125/372] Add ipv6 link local address configuration (#793) * add ipv6-address-type --- .../models/interfaces/openconfig-if-ip.yang | 19 ++++++++++++- .../models/types/openconfig-inet-types.yang | 28 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index dee5d568d..6bb2354b9 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.1.0"; + oc-ext:openconfig-version "3.2.0"; + + revision "2023-02-06" { + description + "Add ipv6 link-local configuration."; + reference "3.2.0"; + } revision "2022-11-09" { description @@ -514,6 +520,17 @@ module openconfig-if-ip { description "The length of the subnet prefix."; } + + leaf type { + type oc-inet:ipv6-address-type; + default GLOBAL_UNICAST; + description + "Specifies the explicit type of the IPv6 address being assigned + to the subinterface. By default, addresses are assumed to be + global unicast. Where a link-local address is to be explicitly + configured, this leaf should be set to LINK_LOCAL."; + } + } grouping ipv6-address-state { diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 899e82d32..3d3ed425e 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -31,7 +31,13 @@ module openconfig-inet-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-02-06" { + description + "Add ipv6-link-local and ipv6-address-type"; + reference "0.6.0"; + } revision "2021-08-17" { description @@ -329,6 +335,26 @@ module openconfig-inet-types { RFC 4001: Textual Conventions for Internet Network Addresses"; } + typedef ipv6-address-type { + type enumeration { + enum GLOBAL_UNICAST { + description + "The IPv6 address is a global unicast address type and must be in + the format defined in RFC 4291 section 2.4."; + } + enum LINK_LOCAL_UNICAST { + description + "The IPv6 address is a Link-Local unicast address type and must be + in the format defined in RFC 4291 section 2.4."; + } + } + description + "The value represents the type of IPv6 address"; + reference + "RFC 4291: IP Version 6 Addressing Architecture + section 2.5"; + } + typedef domain-name { type string { length "1..253"; From c14ff5cbdb4fce74673869e918a20d5308575604 Mon Sep 17 00:00:00 2001 From: Donald Hunter Date: Thu, 23 Feb 2023 02:06:10 +0000 Subject: [PATCH 126/372] vlan - Remove prefixes from enum values in condition clauses (#800) Signed-off-by: Donald Hunter --- release/models/vlan/openconfig-vlan.yang | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/release/models/vlan/openconfig-vlan.yang b/release/models/vlan/openconfig-vlan.yang index 0b29cc0dd..905d48150 100644 --- a/release/models/vlan/openconfig-vlan.yang +++ b/release/models/vlan/openconfig-vlan.yang @@ -26,7 +26,13 @@ module openconfig-vlan { "This module defines configuration and state variables for VLANs, in addition to VLAN parameters associated with interfaces"; - oc-ext:openconfig-version "3.2.1"; + oc-ext:openconfig-version "3.2.2"; + + revision "2023-02-07" { + description + "Remove prefix from enums in when statements"; + reference "3.2.2"; + } revision "2021-07-28" { description @@ -176,7 +182,7 @@ module openconfig-vlan { } leaf native-vlan { - when "../interface-mode = 'oc-vlan-types:TRUNK'" { + when "../interface-mode = 'TRUNK'" { description "Native VLAN is valid for trunk mode interfaces"; } @@ -190,7 +196,7 @@ module openconfig-vlan { } leaf access-vlan { - when "../interface-mode = 'oc-vlan-types:ACCESS'" { + when "../interface-mode = 'ACCESS'" { description "Access VLAN assigned to the interfaces"; } @@ -200,7 +206,7 @@ module openconfig-vlan { } leaf-list trunk-vlans { - when "../interface-mode = 'oc-vlan-types:TRUNK'" { + when "../interface-mode = 'TRUNK'" { description "Allowed VLANs may be specified for trunk mode interfaces."; From b539cc04d8b973a2ebb66189c4cd1114dec53d10 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 3 Mar 2023 12:40:54 -0800 Subject: [PATCH 127/372] Add missing state container to control-plane ACL. (#824) * Add missing state container to control-plane ACL. * (M) release/models/system/openconfig-system-controlplane.yang - Add a missing `state` container to system control plane model. --- .../openconfig-system-controlplane.yang | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/release/models/system/openconfig-system-controlplane.yang b/release/models/system/openconfig-system-controlplane.yang index fee5fd728..c0adfd006 100644 --- a/release/models/system/openconfig-system-controlplane.yang +++ b/release/models/system/openconfig-system-controlplane.yang @@ -45,15 +45,20 @@ module openconfig-system-controlplane { The specified control-plane ACL is applied to traffic received by the control-plane of the system."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-03-03" { + description + "Add missing state container to ACL."; + reference "0.2.0"; + } + revision "2021-08-02" { - description - "Initial revision."; - reference - "0.1.0"; + description + "Initial revision."; + reference "0.1.0"; } grouping system-controlplane-top { @@ -249,6 +254,13 @@ module openconfig-system-controlplane { uses system-controlplane-common-acl-config; } + container state { + config false; + description + "Operational state parameters relating to the ACL to be applied."; + uses system-controlplane-common-acl-config; + } + uses oc-acl:interface-acl-entries-top; } } From daecc74732074504c03fc089e9bb7622158fa3be Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Tue, 7 Mar 2023 13:08:01 -0800 Subject: [PATCH 128/372] Deprecate global per-level 'enabled' leaf for IS-IS. (#794) * Remove global per-level 'enabled' leaf for IS-IS. * (M) release/models/isis/openconfig-isis.yang - Remove the per-level IS-IS enabled leaf within the global configuration, since it is duplicated by the level-capability leaf. See #97. * (M) release/models/isis/openconfig-isis-{routing,lsp}.yang - Bump model version to match master module. --- release/models/isis/openconfig-isis-lsp.yang | 9 ++++++- .../models/isis/openconfig-isis-routing.yang | 9 ++++++- release/models/isis/openconfig-isis.yang | 26 ++++++++++++++++--- 3 files changed, 39 insertions(+), 5 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 2839cab52..e50f48b15 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-25" { + description + "Per-level global enabled configuration removed, since it duplicates + the level-capability leaf."; + reference "1.3.0"; + } revision "2023-01-04" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 16ed143de..7556ca2a5 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-25" { + description + "Per-level global enabled configuration removed, since it duplicates + the level-capability leaf."; + reference "1.3.0"; + } revision "2023-01-04" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 53f81b0c8..b36f2ea44 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-01-25" { + description + "Per-level global enabled configuration removed, since it duplicates + the level-capability leaf."; + reference "1.3.0"; + } revision "2023-01-04" { description @@ -62,7 +69,7 @@ module openconfig-isis { reference "1.2.0"; } - revision "2022-09-20" { + revision "2022-09-20" { description "Add CSNP enable to IS-IS global configuration."; reference "1.1.0"; @@ -295,6 +302,19 @@ module openconfig-isis { } } + grouping admin-config-deprecated { + description + "Re-usable grouping for the enabled leaf in contexts where it is deprecated."; + + leaf enabled { + type boolean; + status deprecated; + description + "Formerly this leaf was used to enable or disable the functionality + within the context specified. This leaf is DEPRECATED."; + } + } + grouping isis-authentication-check-config { description "This grouping defines ISIS authentication check."; @@ -1334,7 +1354,7 @@ module openconfig-isis { description "This container defines ISIS level based configuration."; - uses admin-config; + uses admin-config-deprecated; uses isis-base-level-config; uses isis-metric-style-config; uses isis-authentication-check-config; From 29879d8188315d0024314ff5b6009adc7e7cc591 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Wed, 8 Mar 2023 20:59:48 -0800 Subject: [PATCH 129/372] Fix other spec.yml issues for online documentation. (#828) /system/control-plane-traffic/... and other paths --- release/models/network-instance/.spec.yml | 2 ++ release/models/optical-transport/.spec.yml | 2 ++ release/models/system/.spec.yml | 2 ++ 3 files changed, 6 insertions(+) diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 40c3d4f8a..615cf82ef 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -7,6 +7,8 @@ - yang/network-instance/openconfig-programming-errors.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang + - yang/segment-routing/openconfig-segment-routing.yang + - yang/rib/openconfig-rib-bgp-ext.yang build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang diff --git a/release/models/optical-transport/.spec.yml b/release/models/optical-transport/.spec.yml index d0b990b11..bff97f857 100644 --- a/release/models/optical-transport/.spec.yml +++ b/release/models/optical-transport/.spec.yml @@ -49,6 +49,8 @@ - yang/optical-transport/openconfig-optical-attenuator.yang run-ci: true - name: openconfig-channel-monitor + docs: + - yang/optical-transport/openconfig-channel-monitor.yang build: - yang/optical-transport/openconfig-channel-monitor.yang run-ci: true diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index b4009f87e..f66b1b875 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -12,6 +12,8 @@ - yang/system/openconfig-alarms.yang - yang/system/openconfig-license.yang - yang/openflow/openconfig-openflow.yang + - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-controlplane.yang build: - yang/system/openconfig-system.yang run-ci: true From 53e66659f5ca430f89d707b1be52a9649e4b86b5 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 10 Mar 2023 12:52:05 -0800 Subject: [PATCH 130/372] Allow `ethernet` parameters to be used for LAGs. (#830) * (M) release/models/interfaces/openconfig-if-ethernet.yang - Allow configuration and state parameters to be used for aggregate LAGs. --- .../interfaces/openconfig-if-ethernet.yang | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ethernet.yang b/release/models/interfaces/openconfig-if-ethernet.yang index 803e7f93f..3991923f6 100644 --- a/release/models/interfaces/openconfig-if-ethernet.yang +++ b/release/models/interfaces/openconfig-if-ethernet.yang @@ -24,7 +24,14 @@ module openconfig-if-ethernet { "Model for managing Ethernet interfaces -- augments the OpenConfig model for interface configuration and state."; - oc-ext:openconfig-version "2.12.2"; + oc-ext:openconfig-version "2.13.0"; + + revision "2023-03-10" { + description + "Allow Ethernet configuration parameters to be + used for aggregate (LAG) interfaces."; + reference "2.13.0"; + } revision "2022-04-20" { description @@ -669,9 +676,12 @@ module openconfig-if-ethernet { interfaces model"; uses ethernet-top { - when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" { - description "Additional interface configuration parameters when - the interface type is Ethernet"; + when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd' or " + + "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag'" { + description + "Additional interface configuration parameters when + the interface type is Ethernet, or the interface is an aggregate + interface."; } } } From d4424740e572c3b346698d4877c149cf018f1b1b Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Thu, 16 Mar 2023 09:11:23 -0700 Subject: [PATCH 131/372] Clarify IS-IS instance identifiers per #710. (#816) * Clarify IS-IS instance identifiers per #710. * (M) release/models/isis/openconfig-isis.yang * (M) release/models/isis/openconfig-isis-routing.yang * (M) release/models/isis/openconfig-isis-lsp.yang - Deprecate the `instance` leaf that was ambiguous as to whether this is the name of the instance, or the instance identifier. - Add a new uint16 instance-identifier leaf. --- release/models/isis/openconfig-isis-lsp.yang | 10 ++++++- .../models/isis/openconfig-isis-routing.yang | 11 ++++++- release/models/isis/openconfig-isis.yang | 29 +++++++++++++++++-- 3 files changed, 45 insertions(+), 5 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index e50f48b15..a045d4c78 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,15 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2023-02-22" { + description + "Deprecate the instance leaf, and add a new instance-id leaf + that indicates the value to be used in the Instance Identifier + TLV."; + reference "1.4.0"; + } revision "2023-01-25" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 7556ca2a5..d0d465878 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,12 +20,21 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2023-02-22" { + description + "Deprecate the instance leaf, and add a new instance-id leaf + that indicates the value to be used in the Instance Identifier + TLV."; + reference "1.4.0"; + } revision "2023-01-25" { description "Per-level global enabled configuration removed, since it duplicates the level-capability leaf."; + reference "1.3.0"; } diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index b36f2ea44..6abdadc3c 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,15 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.4.0"; + + revision "2023-02-22" { + description + "Deprecate the instance leaf, and add a new instance-id leaf + that indicates the value to be used in the Instance Identifier + TLV."; + reference "1.4.0"; + } revision "2023-01-25" { description @@ -207,14 +215,29 @@ module openconfig-isis { description "This grouping defines global configuration options for ISIS router."; - // multi-instance leaf instance { type string; default 0; description - "ISIS Instance."; + "ISIS Instance. This leaf has been deprecated. The instance name + is specified within the + /network-instances/network-instance/protocols/protocol/config/name + leaf (list key). If a user requires a specific instance identifier + used in the Instance Identifier TLV to be configured the instance-id + leaf is used."; + status deprecated; } + leaf instance-id { + type uint16; + description + "When specified, this leaf explicitly indicates the instance identifier + that is to be used for the IS-IS instance. The value should be included + in the Instance Identifier (IID) TLV."; + reference "RFC6822: IS-IS Multi-Instance"; + } + + leaf-list net { type oc-isis-types:net; description From 542f76e66f7bfc454421ba473bf764129386ea02 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 20 Mar 2023 11:04:31 -0700 Subject: [PATCH 132/372] Add `default false` to deprecated isis global per-level enabled leaf (#834) * Add `default false` to deprecated isis global per-level enabled leaf --- release/models/isis/openconfig-isis-lsp.yang | 9 ++++++++- release/models/isis/openconfig-isis-routing.yang | 9 ++++++++- release/models/isis/openconfig-isis.yang | 10 +++++++++- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index a045d4c78..aded4a7aa 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.4.1"; + + revision "2023-03-20" { + description + "Per-level global enabled configuration default false re-added to keep + backward compatibility."; + reference "1.4.1"; + } revision "2023-02-22" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index d0d465878..662e07126 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.4.1"; + + revision "2023-03-20" { + description + "Per-level global enabled configuration default false re-added to keep + backward compatibility."; + reference "1.4.1"; + } revision "2023-02-22" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 6abdadc3c..ae2e54e1d 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.4.0"; + oc-ext:openconfig-version "1.4.1"; + + revision "2023-03-20" { + description + "Per-level global enabled configuration default false re-added to keep + backward compatibility."; + reference "1.4.1"; + } revision "2023-02-22" { description @@ -331,6 +338,7 @@ module openconfig-isis { leaf enabled { type boolean; + default false; status deprecated; description "Formerly this leaf was used to enable or disable the functionality From 4ff1293f8bc2641535e60d92f335847403ceb29e Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 18:50:08 -0700 Subject: [PATCH 133/372] Test new oc-pyang rule. --- cloudbuild.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index f59185aeb..0c55f1ebc 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -1,3 +1,6 @@ +substitutions: + _OC_PYANG_VERSION: state-container-dne + steps: ############### GET CI REPO ############### # Decrypt the file containing the key @@ -48,7 +51,8 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v8*' | sort -V | tail -1) + #branch=$(git tag -l 'v8*' | sort -V | tail -1) + branch=ocpyang-version #FIXME: remove git checkout $branch volumes: - name: 'ssh' From 04ca9c215040dc5487163e7556557d7058ae2389 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 19:09:23 -0700 Subject: [PATCH 134/372] Add env var --- cloudbuild.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 0c55f1ebc..6bfe0a567 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -205,6 +205,7 @@ steps: - 'COMMIT_SHA=$COMMIT_SHA' - '_REPO_SLUG=$_REPO_SLUG' - 'BRANCH_NAME=$BRANCH_NAME' + - '_OC_PYANG_VERSION=$_OC_PYANG_VERSION' volumes: - name: 'gopath' path: /go From 43b5475460b87c0684548423be843221591cc14c Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 19:19:23 -0700 Subject: [PATCH 135/372] Trigger Build From 1ce8eae0fd2206b811ea71ecbc4d8904b7be9deb Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 19:59:21 -0700 Subject: [PATCH 136/372] Trigger Build From 0cb0a4c9e7924d9bbc8f98e23341a1ef7c66c37c Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 20:08:26 -0700 Subject: [PATCH 137/372] Fix WiFi model --- .../models/wifi/openconfig-access-points.yang | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index 1b60fd1ac..3aa5bfc94 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,14 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2023-03-22" { + description + "Mirror /access-points/access-point/config/hostname in a state + container."; + reference "1.1.0"; + } revision "2021-08-02" { description @@ -189,6 +196,13 @@ module openconfig-access-points { uses access-points-common-config; } + container state { + description + "State items at the global, Access Point level."; + + uses access-points-common-config; + } + uses wifi-phy:radio-top; uses wifi-mac:ssid-top; uses oc-sys:system-top; From 94abbaea269a38842e78f9b0aa79f89b45e131bb Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 22 Mar 2023 20:11:30 -0700 Subject: [PATCH 138/372] config false --- release/models/wifi/openconfig-access-points.yang | 1 + 1 file changed, 1 insertion(+) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index 3aa5bfc94..eb6241194 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -197,6 +197,7 @@ module openconfig-access-points { } container state { + config false; description "State items at the global, Access Point level."; From 66d905660cfa9fc12d5550c15ab9bae663e34ef5 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 23 Mar 2023 11:11:19 -0700 Subject: [PATCH 139/372] Move CI to version 9 --- cloudbuild.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 6bfe0a567..655ac25dc 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -51,8 +51,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - #branch=$(git tag -l 'v8*' | sort -V | tail -1) - branch=ocpyang-version #FIXME: remove + branch=$(git tag -l 'v9*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' From f95e1ade3b3263e5ae5b9db7e95e9eaf6e20f89b Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 23 Mar 2023 11:30:30 -0700 Subject: [PATCH 140/372] oc-pyang use master branch --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 655ac25dc..3c077efc6 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -1,5 +1,5 @@ substitutions: - _OC_PYANG_VERSION: state-container-dne + _OC_PYANG_VERSION: master steps: ############### GET CI REPO ############### From deb8b942544a7bd9f3a442b277942dc2621ae4cf Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 27 Mar 2023 13:55:54 -0700 Subject: [PATCH 141/372] Update GitHub SSH public key (#838) --- cloudbuild.yaml | 1 + known_hosts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 3c077efc6..7ba05e292 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -18,6 +18,7 @@ steps: - name: 'ssh' path: /root/.ssh # Set up git with key and domain +# See https://cloud.google.com/build/docs/access-github-from-build#add_the_public_ssh_key_to_known_hosts - name: 'gcr.io/cloud-builders/git' entrypoint: 'bash' args: diff --git a/known_hosts b/known_hosts index 1bae52b89..d88529723 100644 --- a/known_hosts +++ b/known_hosts @@ -1 +1 @@ -github.com ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== +github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= From dec7eef990c86841741d47426ea23e9812439656 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 28 Mar 2023 16:52:05 -0700 Subject: [PATCH 142/372] Fix bgp-set-med-type (#839) * clarify intended use of bgp-set-med-type --- release/models/bgp/openconfig-bgp-policy.yang | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index c864959b0..05ae1bacb 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,13 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.1.0"; + oc-ext:openconfig-version "6.1.1"; + + revision "2023-03-27" { + description + "Clarify bgp-set-med-type description"; + reference "6.1.1"; + } revision "2022-05-24" { description @@ -172,8 +178,9 @@ module openconfig-bgp-policy { description "Type definition for specifying how the BGP MED can be set in BGP policy actions. The three choices are to set - the MED directly, increment/decrement using +/- notation, - and setting it to the IGP cost (predefined value)."; + the MED directly using the uint32 type or increment/decrement + using +/- notation in the string type or setting it to + the IGP cost using the enum (predefined value)."; } // grouping statements From 47344833ac7b24a350e58bb46ff1f9fba50db17f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Fri, 31 Mar 2023 09:17:01 +0900 Subject: [PATCH 143/372] Add control word support for EVPN (#792) * Add control word support for EVPN --- .../network-instance/openconfig-evpn.yang | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index 49301ebb3..93c18972c 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,13 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.4.0"; + + revision "2023-01-24" { + description + "Add control word support"; + reference "0.4.0"; + } revision "2021-06-28" { description @@ -725,6 +731,17 @@ module openconfig-evpn { reference "RFC 7432: BGP MPLS-Based Ethernet VPN page-18"; } + + leaf control-word-enabled { + type boolean; + description + "When true, the control word is signaled and sent."; + reference + "RFC8214 Virtual Private Wire Service Support + in Ethernet VPN + draft-ietf-bess-rfc7432bis-05 BGP MPLS-Based + Ethernet VPN"; + } } grouping evpn-import-export-config { From 3da34100f993860429989d83a90fff00078d6281 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 31 Mar 2023 15:16:43 -0700 Subject: [PATCH 144/372] openconfig maintainers may update doc folder (#845) --- .github/CODEOWNERS | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1788349d0..c04ec440b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -4,6 +4,11 @@ * @aashaikh @robshakir @dplore # the release/models directory (all YANG content) -# is maintained by the public-writers OpenConfig team. +# and doc directory is maintained by the public-writers +# OpenConfig team. +/doc @openconfig/public-writers /release/models/ @openconfig/public-writers + +# subfolders may have additional codeowners who +# may merge content /release/models/wifi @mike-albano From 0491a7529c110d8419fd8a4962ff91966e3e6351 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 31 Mar 2023 15:19:02 -0700 Subject: [PATCH 145/372] fix control-plane-traffic aggregate counter typo (#844) Update docs for control-plane-traffic aggregate counters to match yang model --- doc/vendor_counter_guide.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/vendor_counter_guide.md b/doc/vendor_counter_guide.md index 74739edff..1b121f0fa 100644 --- a/doc/vendor_counter_guide.md +++ b/doc/vendor_counter_guide.md @@ -126,10 +126,10 @@ module: openconfig-platform Each implementor should augment `/components/component/integrated-circuit/control-plane-traffic/vendor` with their own `//state` containers. The naming of the platform container may consist of the platform name, ASIC family, or a combination of both platform and ASIC family. Within the state container, it should define vendor-specific counter containers. Each control-plane traffic counter may use the utility grouping `oc-ic:control-plane-traffic-vendor-counters` that provides the queued/dropped leaves. For each counters augmented into `//state`, the sum of the counters should be included in the values of the aggregate leaves: -- Counters within `.../control-plane-traffic/vendor///state//queued` aggregate into `.../control-plane-traffic/state/total-queued` -- Counters within `.../control-plane-traffic/vendor///state//queued-bytes` aggregate into `.../control-plane-traffic/state/total-queued-bytes` -- Counters within `.../control-plane-traffic/vendor///state//dropped` aggregate into `.../control-plane-traffic/state/total-dropped` -- Counters within `.../control-plane-traffic/vendor///state//dropped-bytes` aggregate into `.../control-plane-traffic/state/total-dropped-bytes` +- Counters within `.../control-plane-traffic/vendor///state//queued` aggregate into `.../control-plane-traffic/state/queued-aggregate` +- Counters within `.../control-plane-traffic/vendor///state//queued-bytes` aggregate into `.../control-plane-traffic/state/queued-bytes-aggregate` +- Counters within `.../control-plane-traffic/vendor///state//dropped` aggregate into `.../control-plane-traffic/state/dropped-aggregate` +- Counters within `.../control-plane-traffic/vendor///state//dropped-bytes` aggregate into `.../control-plane-traffic/state/dropped-bytes-aggregate` If these aggregate counters are implemented, the sum of the vendor-specific counters must match the aggregate counters. From bfa949f4d340d225a4f23882f7d58f964d464e22 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 31 Mar 2023 17:05:01 -0700 Subject: [PATCH 146/372] Fix ISIS set-metric-type (#841) * fixing type of set-metric-type field --------- Co-authored-by: Alex Webster <31635844+awebsters@users.noreply.github.com> --- .../models/isis/openconfig-isis-policy.yang | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/release/models/isis/openconfig-isis-policy.yang b/release/models/isis/openconfig-isis-policy.yang index c9ef83ab8..3f373d041 100644 --- a/release/models/isis/openconfig-isis-policy.yang +++ b/release/models/isis/openconfig-isis-policy.yang @@ -26,7 +26,13 @@ module openconfig-isis-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-02-27" { + description + "Fixing type for set-metric-type leaf"; + reference "0.6.0"; + } revision "2020-02-04" { description @@ -178,6 +184,16 @@ module openconfig-isis-policy { leaf set-metric-type { type isis-types:level-number; + status deprecated; + description + "Formerly this leaf sets the type of metric that is to be specified + when the set-metric leaf is specified. This leaf is DEPRECATED + due to being assigned the wrong type. Use set-metric-style-type + instead."; + } + + leaf set-metric-style-type { + type isis-types:metric-style; description "Set the type of metric that is to be specified when the set metric leaf is specified"; From de94e3b3573de05466305f8f7eb4eae960da54e7 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 31 Mar 2023 17:12:05 -0700 Subject: [PATCH 147/372] [Forked from #609] Add ICMP type/code and packet length matches. (#798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add support of the packet length and several protocols filter. Add ICMP field in IPv4 and IPv6 packets * Add ICMPv[46] type and code defininitions, update ICMPv[46] match. * Remove protocols list and maintain single protocol field. --------- Co-authored-by: sbarguil Co-authored-by: Óscar González de Dios Co-authored-by: Darren Loher --- .../models/acl/openconfig-icmpv4-types.yang | 540 +++++++++ .../models/acl/openconfig-icmpv6-types.yang | 1004 +++++++++++++++++ .../acl/openconfig-packet-match-types.yang | 9 +- .../models/acl/openconfig-packet-match.yang | 135 ++- 4 files changed, 1684 insertions(+), 4 deletions(-) create mode 100644 release/models/acl/openconfig-icmpv4-types.yang create mode 100644 release/models/acl/openconfig-icmpv6-types.yang diff --git a/release/models/acl/openconfig-icmpv4-types.yang b/release/models/acl/openconfig-icmpv4-types.yang new file mode 100644 index 000000000..486f3e157 --- /dev/null +++ b/release/models/acl/openconfig-icmpv4-types.yang @@ -0,0 +1,540 @@ +module openconfig-icmpv4-types { + + yang-version "1"; + namespace "http://openconfig.net/yang/openconfig-icmpv4-types"; + + prefix "oc-icmpv4-types"; + + import openconfig-extensions { prefix oc-ext; } + + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "OpenConfig module defining the types and coresponding codes for + ICMPv4."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-01-26" { + description + "Initial revision of ICMPv4 types module."; + reference "0.1.0"; + } + + identity TYPE { + description + "Base identity for ICMPv4 codes"; + } + + identity CODE { + description + "Base identity for ICMPv4 codes."; + } + + identity ECHO_REPLY { + description + "ICMP echo reply, value 0."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE { + description + "ICMP destination unreachable, value 3."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT { + description + "ICMP redirect, value 5."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ECHO { + description + "ICMP echo, value 8."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ROUTER_ADVERTISEMENT { + description + "ICMP router advertisement, value 9."; + base TYPE; + reference "RFC1256: ICMP Router Discovery Messages"; + } + + identity ROUTER_SOLICITATION { + description + "ICMP Router Solicitation, value 10."; + base TYPE; + reference "RFC1256: ICMP Router Discovery Messages"; + } + + identity TIME_EXCEEDED { + description + "ICMP TTL exceede, value 11."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PARAM_PROBLEM { + description + "ICMP parameter problem, value 12."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP { + description + "ICMP timestamp, value 13."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP_REPLY { + description + "ICMP timestamp reply, value 14."; + base TYPE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + identity TRACEROUTE{ + description + "Traceroute (deprecated), value 30."; + base TYPE; + reference "RFC1393: Traceroute Using an IP Option"; + } + identity PHOTURIS { + description + "ICMP Photuris, value 40."; + base TYPE; + reference "RFC2521: CMP Security Failures Messages"; + } + + identity EXT_ECHO_REQUEST { + description + "ICMP extended echo request, value 42."; + base TYPE; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY { + description + "ICMP extended echo reply, value 43."; + base TYPE; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity ECHO_REPLY_CODE { + description + "CODE for ICMPv4 Echo Reply."; + base CODE; + } + + identity ECHO_REPLY_NONE { + description + "No code, type 0 for Echo Reply."; + base ECHO_REPLY_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_CODE { + description + "Codes for ICMPv4 Destination Unreachable."; + base CODE; + } + + identity DST_UNREACHABLE_NET { + description + "ICMPv4 destination network unreachable, code 0."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_HOST { + description + "ICMPv4 destination host unreachable, code 1"; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_PROTOCOL { + description + "ICMPv4 destination protocol unreachable, code 2."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_PORT { + description + "ICMPv4 Port unreachable, code 3."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_CANNOT_FRAGMENT { + description + "ICMPv4 destination unreachable due to inability to fragment. The df-bit + is set but the packet requires fragmentation, code 4."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_SRC_ROUTE_FAILED { + description + "ICMPv4 destination is unreachable as source routing failed, code 5."; + base DST_UNREACHABLE_CODE; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity DST_UNREACHABLE_DST_NET_UNKNOWN { + description + "ICMPv4 destination is unreachable as the destination network is + unknown, code 6."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_DST_HOST_UNKNOWN { + description + "ICMPv4 destination is unreachable as the destination host is unknown, code 7."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_SRC_HOST_ISOLATED { + description + "ICMPv4 destination unreachable as the source host is isolated, code 8."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_DST_NET_ADMIN_PROHIBITED { + description + "ICMPv4 destination is unreachable as communication with the destination + network is administratively prohibited, code 9."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_DST_HOST_ADMIN_PROHIBITED { + description + "ICMPv4 destination is unreachable as communication with the destination + host is adminstratively prohibited, code 10."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_NET_UNREACHABLE_FOR_TOS { + description + "ICMPv4 destination network is unreachable for the specified type of + service, code 11."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_HOST_UNREACHABLE_FOR_TOS { + description + "ICMPv4 destination host is unreachable for the specified type of + service, code 12."; + base DST_UNREACHABLE_CODE; + reference "RFC1122: Requirements for Internet Hosts -- + Communication Layers"; + } + + identity DST_UNREACHABLE_ADMIN_PROHIBITED { + description + "ICMPv4 destination is unreacable as packets were adminstratively + filtered."; + base DST_UNREACHABLE_CODE; + reference "RFC1812: Requirements for IP Version 4 Routers"; + } + + identity DST_UNREACHABLE_HOST_PRECEDENCE_VIOLATION { + description + "ICMPv4 destination is unreachable as the first-hop router has determined + that the destination cannot be reached for the specified source/ + destination host, network, upper-layer protocol and source/destination + port. Code 14"; + base DST_UNREACHABLE_CODE; + } + + identity DST_UNREACHABLE_PRECEDENCE_CUTOFF { + description + "ICMPv4 Precedence cutoff in effect. The network operators have imposed + a minimum level of precedence required for operation, the + datagram was sent with a precedence below this level. + Code 15."; + base DST_UNREACHABLE_CODE; + reference "RFC1812: Requirements for IP Version 4 Routers"; + } + + identity REDIRECT_CODE { + base CODE; + description + "Codes for the ICMPv4 Redirect type."; + } + + identity REDIRECT_NETWORK { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the network or subnet, + code 0"; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT_HOST { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the host, code 1."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT_TOS_NETWORK { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the network and type of service. code 2."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity REDIRECT_TOS_HOST { + base REDIRECT_CODE; + description + "ICMP redirect is being issued for the host and type of service, + code 3"; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ECHO_CODE { + base CODE; + description + "Codes for ICMPv4 echo messages."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ECHO_NO_CODE { + base ECHO_CODE; + description + "No code."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity ROUTER_ADVERTISEMENT_CODE { + base CODE; + description + "Code for the ICMPv4 router advertisement message."; + } + identity ROUTER_ADVERTISEMENT_NORMAL { + base ROUTER_ADVERTISEMENT_CODE; + description + "Code 0: Normal router advertisement."; + reference "RFC3344: IP Mobility Support for IPv4"; + } + + identity ROUTER_ADVERTISEMENT_DOES_NOT_ROUTE_COMMON { + base ROUTER_ADVERTISEMENT_CODE; + description + "Code 16: Does not route common traffic."; + reference "RFC3344: IP Mobility Support for IPv4"; + } + + identity ROUTER_SELECTION_CODE { + base CODE; + description + "Codes for the ICMPv4 router selection message."; + } + + identity ROUTER_SELECTION_NO_CODE { + base ROUTER_SELECTION_CODE; + description + "No code."; + reference "RFC1256: ICMP Router Discovery Messages"; + } + + identity TIME_EXCEEDED_CODE { + base CODE; + description + "Codes for the ICMPv4 time exceeded code."; + } + + identity TIME_EXCEEDED_IN_TRANSIT { + base TIME_EXCEEDED_CODE; + description + "Code 0: Time to Live exceeded in Transit."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIME_EXCEEDED_FRAGMENT_REASSEMBLY_IN_TRANSIT { + base TIME_EXCEEDED_CODE; + description + "Code 1: Fragment reassembly time exceeded."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PARAM_PROBLEM_CODE { + base CODE; + description + "Codes for the ICMPv4 parameter problem message (Type 12)."; + } + + identity PARAM_PROBLEM_POINTER_INDICATES_ERR { + base PARAM_PROBLEM_CODE; + description + "Code 0: Pointer indicates the error."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PARAM_PROBLEM_MISSING_REQ_OPTION { + base PARAM_PROBLEM_CODE; + description + "Code 1: Missing a required option."; + reference "RFC1108: U.S. Department of Defense + Security Options for the Internet Protocol"; + } + + identity PARAM_PROBLEM_BAD_LENGTH { + base PARAM_PROBLEM_CODE; + description + "Code 2: Bad Length."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP_CODE { + base CODE; + description + "Codes of the ICMPv4 timestamp message (Type 13)."; + } + identity TIMESTAMP_NO_CODE { + base TIMESTAMP_CODE; + description + "No code."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity TIMESTAMP_REPLY_CODE { + base CODE; + description + "Codes of the ICMPv4 timestamp reply message (Type 14)."; + } + + identity TIMESTAMP_REPLY_NO_CODE { + base TIMESTAMP_REPLY_CODE; + description + "No code."; + reference "RFC792: INTERNET CONTROL MESSAGE PROTOCOL"; + } + + identity PHOTURIS_CODE { + base CODE; + description + "Codes of the ICMPv4 Photuris message (type 40)."; + } + + identity PHOTURIS_BAD_SPI { + base PHOTURIS_CODE; + description + "Code 0: Bad SPI."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_AUTH_FAILED { + base PHOTURIS_CODE; + description + "Code 1: Authentication failed."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_DECOMPRESS_FAILED { + base PHOTURIS_CODE; + description + "Code 2: Decompression failed."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_DECRYPTION_FAILED { + base PHOTURIS_CODE; + description + "Code 3: Decryption failed."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_NEED_AUTHENTICATION { + base PHOTURIS_CODE; + description + "Code 4: Need authentication."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity PHOTURIS_NEED_AUTHORIZATION { + base PHOTURIS_CODE; + description + "Code 5: Need authorization."; + reference "RFC2521: ICMP Security Failures Messages"; + } + + identity EXT_ECHO_REQUEST_CODE { + description + "Codes of the extended echo request ICMP message."; + base CODE; + } + + identity EXT_ECHO_REQUEST_NO_ERROR { + base EXT_ECHO_REQUEST_CODE; + description + "Code 0: No error."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_CODE { + description + "Codes of the extended echo reply ICMP message (Type 43)."; + base CODE; + } + + identity EXT_ECHO_REPLY_NO_ERROR { + base EXT_ECHO_REPLY_CODE; + description + "Code 0: No error."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MALFORMED_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Code 1: Malformed query."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUCH_INTF { + base EXT_ECHO_REPLY_CODE; + description + "Code 2: No such interface."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUB_TABLE_ENTRY { + base EXT_ECHO_REPLY_CODE; + description + "Code 3: No such table entry."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Code 4: Multiple interfaces satisfy query."; + reference "RFC8335: PROBE: A Utility for Probing Interfaces"; + } +} diff --git a/release/models/acl/openconfig-icmpv6-types.yang b/release/models/acl/openconfig-icmpv6-types.yang new file mode 100644 index 000000000..3b263a9d3 --- /dev/null +++ b/release/models/acl/openconfig-icmpv6-types.yang @@ -0,0 +1,1004 @@ +module openconfig-icmpv6-types { + + yang-version "1"; + namespace "http://openconfig.net/yang/openconfig-icmpv6-types"; + + prefix "oc-icmpv4-types"; + + import openconfig-extensions { prefix oc-ext; } + + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "OpenConfig module defining the types and coresponding subcodes for + ICMPv6."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-01-26" { + description + "Initial revision of ICMPv6 types module."; + reference "0.1.0"; + } + + identity TYPE { + description + "Base identity for ICMPv6 codes"; + } + + identity CODE { + description + "Base identity for ICMPv6 subcodes."; + } + + identity DESTINATION_UNREACHABLE { + base TYPE; + description + "Type 1: Destination unreachable."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PACKET_TOO_BIG { + base TYPE; + description + "Type 2: Packet too big."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity TIME_EXCEEDED { + base TYPE; + description + "Type 3: Time exceeded."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAMETER_PROBLEM { + base TYPE; + description + "Type 4: Parameter problem."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity ECHO_REQUEST { + base TYPE; + description + "Type 128: Echo request."; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity ECHO_REPLY { + base TYPE; + description + "Type 129: Echo reply"; + reference + "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity MULTICAST_LISTENER_QUERY { + base TYPE; + description + "Type 130: Multicast listener query"; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_REPORT { + base TYPE; + description + "Type 131: Multicast listener report"; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_DONE { + base TYPE; + description + "Type 132: Multicast listener done"; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity ROUTER_SOLICITATION { + base TYPE; + description + "Type 133: IPv6 router soliciation."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity ROUTER_ADVERTISEMENT { + base TYPE; + description + "Type 134: IPv6 router advertisement."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_SOLICITATION { + base TYPE; + description + "Type 135: IPv6 neighbor solicitation."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_ADVERTISEMENT { + base TYPE; + description + "Type 136: IPv6 neighbor advertisement."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity REDIRECT { + base TYPE; + description + "Type 137: IPv6 ICMP redirect message."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity RENUNBERING { + base TYPE; + description + "Type 138: Router renumbering."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity NODE_INFORMATION_QUERY { + base TYPE; + description + "Type 139: ICMP Node Information Query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + identity NODE_INFORMATION_RESPONSE { + base TYPE; + description + "Type 140: ICMP Node Information Response."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity INVERSE_NEIGHBOR_SOLICITATION { + base TYPE; + description + "Type 141: Inverse Neighbor Discovery Solicitation Message."; + reference "RFC3122: Extensions to IPv6 Neighbor Discovery for + Inverse Discovery Specification"; + } + + identity INVERSE_NEIGHBOR_ADVERTISEMENT { + base TYPE; + description + "Type 142: Inverse Neighbor Discovery Advertisement Message."; + reference "RFC3122: Extensions to IPv6 Neighbor Discovery for + Inverse Discovery Specification"; + } + + identity VERSION2_MULTICAST_LISTENER { + base TYPE; + description + "Type 143: Version 2 Multicast Listener Report"; + reference + "RFC3810: Multicast Listener Discovery Version 2 (MLDv2) for IPv6"; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REQUEST { + base TYPE; + description + "Type 144: Home Agent Address Discovery Request Message."; + reference "RFC6275: Mobility Support in IPv6"; + + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REPLY { + base TYPE; + description + "Type 145: Home Agent Address Discovery Reply Message."; + reference "RFC6275: Mobility Support in IPv6"; + + } + + identity MOBILE_PREFIX_SOLICITATION { + base TYPE; + description + "Type 147: Mobile Prefix Solicitation."; + reference "RFC6275: Mobility Support in IPv6"; + } + + identity MOBILE_PREFIX_ADVERTISEMENT { + base TYPE; + description + "Type 147: Mobile Prefix Advertisement."; + reference "RFC6275: Mobility Support in IPv6"; + } + + identity CERTIFICATION_PATH_SOLICITATION { + base TYPE; + description + "Type 148: Certification Path Soliciation Message."; + reference "RFC3971: SEcure Neighbor Discovery (SEND)"; + } + + identity CERTIFICATION_PATH_ADVERTISEMENT { + base TYPE; + description + "Type 149: Certification Path Advertisement Message."; + reference "RFC3971: SEcure Neighbor Discovery (SEND)"; + } + + identity MULTICAST_ROUTER_ADVERTISEMENT { + base TYPE; + description + "Type 151: Multicast Router Advertisement."; + reference "RFC4286: Multicast Router Discovery"; + } + + identity MULTICAST_ROUTER_SOLICITATION { + base TYPE; + description + "Type 152: Multicast Router Solicitation."; + reference "RFC4286: Multicast Router Discovery"; + } + + identity MULTICAST_ROUTER_TERMINATION { + base TYPE; + description + "Type 153: Multicast Router Termination."; + reference "RFC4286: Multicast Router Discovery"; + } + + identity FMIPV6 { + base TYPE; + description + "Type 154: Fast handover mode for IPv6."; + reference + "RFC5568: Mobile IPv6 Fast Handovers"; + } + + identity RPL_CONTROL { + base TYPE; + description + "Type 155: RPL Control Message."; + reference + "RFC6550: RPL: IPv6 Routing Protocol for Low-Power and Lossy Networks"; + } + + identity ILNPV6_LOCATOR_UPDATE { + base TYPE; + description + "Type 156: ILNPv6 Locator Update Message."; + reference + "RFC6743: ICMP Locator Update Message for + the Identifier-Locator Network Protocol for IPv6 (ILNPv6)"; + } + + identity DUPLICATE_ADDRESS_REQUEST { + base TYPE; + description + "Type 157: Duplicate address request."; + reference + "RFC6775: Neighbor Discovery Optimization for IPv6 over Low-Power Wireless + Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_CONFIRMATION { + base TYPE; + description + "Type 158: Duplicate address confirmation."; + reference + "RFC6775: Neighbor Discovery Optimization for IPv6 over Low-Power Wireless + Personal Area Networks (6LoWPANs)"; + } + + identity MPL_CONTROL { + base TYPE; + description + "Type 159: MPL Control Message."; + reference + "RFC7731: Multicast Protocol for Low-Power and Lossy Networks (MPL)"; + } + + identity EXT_ECHO_REQUEST { + base TYPE; + description + "Type 160: Extended echo request."; + reference + "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY { + base TYPE; + description + "Type 161: Extended echo reply."; + reference + "RFC8335: PROBE: A Utility for Probing Interfaces"; + } + + identity DST_UNREACHABLE_CODE { + base CODE; + description + "ICMPv6 destination unreachable subcodes."; + } + identity DST_UNREACHABLE_NO_ROUTE_TO_DST { + base DST_UNREACHABLE_CODE; + description + "Code 0: No route to destination."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + identity DST_UNREACHABLE_DST_ADMIN_PROHIBITED { + base DST_UNREACHABLE_CODE; + description + "Code 1: Communication with destination adminstratively prohibited."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_BEYOND_SCOPE_OF_SRC { + base DST_UNREACHABLE_CODE; + description + "Code 2: Beyond scope of source address."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_ADDR { + base DST_UNREACHABLE_CODE; + description + "Code 3: Address unreachable."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_PORT { + base DST_UNREACHABLE_CODE; + description + "Code 4: Port unreachable."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_SRC_ADDR_FAILED_POLICY { + base DST_UNREACHABLE_CODE; + description + "Code 5: Source address failed ingress/egress policy."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_REJECT_ROUTE_TO_DST { + base DST_UNREACHABLE_CODE; + description + "Code 6: Reject route to destination."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity DST_UNREACHABLE_ERR_IN_SRC_ROUTING_HDR { + base DST_UNREACHABLE_CODE; + description + "Code 7: Error in Source Routing Header."; + reference "RFC8554: An IPv6 Routing Header for Source Routes with + the Routing Protocol for Low-Power and Lossy Networks (RPL)"; + } + + identity DST_UNREACHABLE_HDRS_TOO_LONG { + base DST_UNREACHABLE_CODE; + description + "Type 8: Headers too long"; + reference "RFC8883: ICMPv6 Errors for Discarding Packets Due to + Processing Limits"; + } + + identity PACKET_TOO_BIG_CODE { + base CODE; + description + "Subcodes for the ICMPv6 Packet Too Big type."; + } + + identity PACKET_TOO_BIG_NO_CODE { + base PACKET_TOO_BIG_CODE; + description + "No code, value 0."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity TIME_EXCEEDED_CODE { + base CODE; + description + "Subcodes for the Time Exceeded ICMPv6 type."; + } + + identity TIME_EXCEEDED_HOP_LIMIT { + base TIME_EXCEEDED_CODE; + description + "Code 0: Hop limit exceeded in transit."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + identity TIME_EXCEEDED_FRAGMENT_REASSEMBLY { + base TIME_EXCEEDED_CODE; + description + "Code 1: Fragment reassembly time exceeded."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_CODE { + base CODE; + description + "Subcodes for the Parameter Problem ICMPv6 type."; + } + + identity PARAM_PROBLEM_ERR_HDR_FIELD { + base PARAM_PROBLEM_CODE; + description + "Erroneous header field encountered."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_UNRECOGNIZED_NET_HDR_TYPE { + base PARAM_PROBLEM_CODE; + description + "Unrecognized Next Header type encountered."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_UNRECOGNIZED_IPV6_OPT { + base PARAM_PROBLEM_CODE; + description + "Unrecognized IPv6 option encountered."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity PARAM_PROBLEM_INCOMPLETE_HDR_CHAIN { + base PARAM_PROBLEM_CODE; + description + "IPv6 First Fragment has incomplete IPv6 Header Chain."; + reference + "RFC7112: Implications of Oversized IPv6 Header Chains"; + } + + identity PARAM_PROBLEM_SR_UPPER_HDR_ERR { + base PARAM_PROBLEM_CODE; + description + "SR Upper-layer Header Error"; + reference + "RFC8754: IPv6 Segment Routing Header (SRH)"; + } + + identity PARAM_PROBLEM_UNRECOGNIZED_NEXT_HDR_TYPE { + base PARAM_PROBLEM_CODE; + description + "Unrecognized Next Header type encountered by intermediate node"; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_EXT_HDR_TOO_BIG { + base PARAM_PROBLEM_CODE; + description + "Extension header too big."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_EXT_HDR_CHAIN_TOO_LONG { + base PARAM_PROBLEM_CODE; + description + "Extension header chain too long."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_TOO_MANY_EXT_HDRS { + base PARAM_PROBLEM_CODE; + description + "Too many extension headers."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_TOO_MANY_OPTS { + base PARAM_PROBLEM_CODE; + description + "Too many options in extension header."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity PARAM_PROBLEM_OPT_TOO_BIG { + base PARAM_PROBLEM_CODE; + description + "Option too big."; + reference + "RFC8883: ICMPv6 Errors for Discarding Packets Due to Processing Limits"; + } + + identity ECHO_REQUEST_CODE { + base CODE; + description + "Subcodes for the ICMPv6 echo request type."; + } + + identity ECHO_REQUEST_NO_CODE { + base ECHO_REQUEST_CODE; + description + "No code."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity ECHO_REPLY_CODE { + base CODE; + description + "Subcodes for the ICMPv6 echo reply subcode."; + } + + identity ECHO_REPLY_NO_CODE { + base ECHO_REPLY_CODE; + description + "No code."; + reference "RFC4443: Internet Control Message Protocol (ICMPv6) + for the Internet Protocol Version 6 (IPv6) Specification"; + } + + identity MULTICAST_LISTENER_QUERY_CODE { + base CODE; + description + "Subcodes for the multicast listener query ICMPv6 type."; + } + + identity MULTICAST_LISTENER_QUERY_NO_CODE { + base MULTICAST_LISTENER_QUERY_CODE; + description + "No code."; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_REPORT_CODE { + base CODE; + description + "Subcodes for the multicast listener report ICMPv6 type."; + } + + identity MULTICAST_LISTENER_REPORT_NO_CODE { + base MULTICAST_LISTENER_REPORT_CODE; + description + "No code."; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity MULTICAST_LISTENER_DONE_CODE { + base CODE; + description + "Subcodes for the multicast listener done ICMPv6 type."; + } + + identity MULTICAST_LISTENER_DONE_NO_CODE { + base MULTICAST_LISTENER_DONE_CODE; + description + "No code."; + reference + "RFC2710: Multicast Listener Discovery (MLD) for IPv6"; + } + + identity ROUTER_SOLICITATION_CODE { + base CODE; + description + "Subcodes for the router solicitation ICMPv6 type."; + } + identity ROUTER_SOLICITATION_NO_CODE { + base ROUTER_SOLICITATION_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity ROUTER_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the router advertisement ICMPv6 type."; + } + + identity ROUTER_ADVERTISEMENT_NO_CODE { + base ROUTER_ADVERTISEMENT_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_SOLICITATION_CODE { + base CODE; + description + "Subcodes for the router solicitation ICMPv6 type."; + } + + identity NEIGHBOR_SOLICITATION_NO_CODE { + base NEIGHBOR_SOLICITATION_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity NEIGHBOR_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the neighbor advertisement ICMPv6 type."; + } + + identity NEIGHBOR_ADVERTISEMENT_NO_CODE { + base NEIGHBOR_ADVERTISEMENT_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity REDIRECT_CODE { + base CODE; + description + "Subcodes for the redirect ICMPv6 type."; + } + + identity REDIRECT_NO_CODE { + base REDIRECT_CODE; + description + "No code."; + reference + "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + + identity RENUMBERING_CODE { + base CODE; + description + "Subcodes for the redirect ICMPv6 type for renumbering."; + } + + identity RENUMBERING_COMMAND { + base RENUMBERING_CODE; + description + "Router renumbering command."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity RENUNBERING_RESULT { + base RENUMBERING_CODE; + description + "Router renumbering result."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity RENUNBERING_SEQ_NUM_RESET { + base RENUMBERING_CODE; + description + "Router renumbering sequence number reset."; + reference + "RFC2894: Router Renumbering for IPv6"; + } + + identity NODE_INFORMATION_QUERY_CODE { + base CODE; + description + "Subcodes for the node information query ICMPv6 type."; + } + + identity NODE_INFORMATION_QUERY_IPV6_ADDR { + base NODE_INFORMATION_QUERY_CODE; + description + "The data field contains an IPv6 address which is the subject of the + query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_QUERY_NAME { + base NODE_INFORMATION_QUERY_CODE; + description + "The data field contains a name which is the subject of the + query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_QUERY_IPV4_ADDR { + base NODE_INFORMATION_QUERY_CODE; + description + "The data field contains an IPv4 address which is the subject of the + query."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NDDE_INFORMATION_RESPONSE_CODE { + base CODE; + description + "Subcodes for the node information response ICMPv6 type."; + } + + identity NODE_INFORMATION_RESPONSE_SUCCESS { + base NDDE_INFORMATION_RESPONSE_CODE; + description + "A successful reply."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_RESPONSE_REFUSED { + base NDDE_INFORMATION_RESPONSE_CODE; + description + "The responder refuses to supply the answer."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity NODE_INFORMATION_RESPONSE_UNKNOWN { + base NDDE_INFORMATION_RESPONSE_CODE; + description + "The query type is unknown to the responder."; + reference + "RFC4620: IPv6 Node Information Queries"; + } + + identity INVERSE_NEIGHBOR_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the Inverse Neighbor Discovery ICMPv6 type."; + } + + identity INVERSE_NEIGHBOR_ADVERTISEMENT_NO_CODE { + base INVERSE_NEIGHBOR_ADVERTISEMENT_CODE; + description + "No code."; + reference + "RFC3122: Extensions to IPv6 Neighbor Discovery for Inverse Discovery + Specification"; + } + + identity INVERSE_NEIGHBOR_SOLICITATION_CODE { + base CODE; + description + "Subcode for the inverse neighbor solicitation ICMP6 type."; + } + + identity INVERSE_NEIGHBOR_SOLICITATION_NO_CODE { + base INVERSE_NEIGHBOR_SOLICITATION_CODE; + description + "No code."; + reference + "RFC3122: Extensions to IPv6 Neighbor Discovery for Inverse Discovery + Specification"; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE { + base CODE; + description + "Subcodes for the Home Agent Address Discovery Request ICMPv6 type."; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_NO_CODE { + base HOME_AGENT_ADDRESS_DISCOVERY_REQUEST_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE { + base CODE; + description + "Subcodes for the Home Agent Address Discovery Reply ICMPv6 type."; + } + + identity HOME_AGENT_ADDRESS_DISCOVERY_REPLY_NO_CODE { + base HOME_AGENT_ADDRESS_DISCOVERY_REPLY_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity MOBILE_PREFIX_SOLICITATION_CODE { + base CODE; + description + "Subcodes for the Mobile Prefix Solicitation ICMPv6 type."; + } + + identity MOBILE_PREFIX_SOLICITATION_NO_CODE { + base MOBILE_PREFIX_SOLICITATION_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity MOBILE_PREFIX_ADVERTISEMENT_CODE { + base CODE; + description + "Subcodes for the Mobile Prefix Advertisement ICMPv6 type."; + } + + identity MOBILE_PREFIX_ADVERTISEMENT_NO_CODE { + base MOBILE_PREFIX_ADVERTISEMENT_CODE; + description + "No code."; + reference "RFC3775: Mobility Support in IPv6"; + } + + identity DUPLICATE_ADDRESS_REQUEST_CODE { + base CODE; + description + "Subcodes for the Duplicate Address Request ICMPv6 type."; + } + + identity DUPLICATE_ADDRESS_REQUEST_DAR { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "DAR message"; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR64 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 64-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR128 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 128-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR192 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 192-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REQUEST_EDAR_ROVR256 { + base DUPLICATE_ADDRESS_REQUEST_CODE; + description + "EDAR message with 256-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_CODE { + base CODE; + description + "Subcodes for the Duplicate Address Confirmation Code ICMPv6 type."; + } + + identity DUPLICATE_ADDRESS_REPLY_DAC { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "DAC message"; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR64 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 64-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR128 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 128-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR192 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 192-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity DUPLICATE_ADDRESS_REPLY_EDAC_ROVR256 { + base DUPLICATE_ADDRESS_REPLY_CODE; + description + "EDAC message with 256-bit ROVR field."; + reference "RFC6775: Neighbor Discovery Optimization for IPv6 over + Low-Power Wireless Personal Area Networks (6LoWPANs)"; + } + + identity EXT_ECHO_REQUEST_CODE { + base CODE; + description + "Subcodes for the extended echo request ICMPv6 type."; + } + + identity EXT_ECHO_REQUEST_NO_ERROR { + base EXT_ECHO_REQUEST_CODE; + description + "No error."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_CODE { + base CODE; + description + "Subcodes for the extended echo reply ICMPv6 type."; + } + + identity EXT_ECHO_REPLY_NO_ERROR { + base EXT_ECHO_REPLY_CODE; + description + "No error."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MALFORMED_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Malformed query."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUCH_INTERFACE { + base EXT_ECHO_REPLY_CODE; + description + "No such interface."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_NO_SUCH_TABLE_ENTRY { + base EXT_ECHO_REPLY_CODE; + description + "No such table entry."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } + + identity EXT_ECHO_REPLY_MULTIPLE_INTF_SATISFY_QUERY { + base EXT_ECHO_REPLY_CODE; + description + "Multiple interfaces satisfy query."; + reference + "RFC8355: PROBE: A Utility for Probing Interfaces"; + } +} diff --git a/release/models/acl/openconfig-packet-match-types.yang b/release/models/acl/openconfig-packet-match-types.yang index 9963a920a..b5f467a74 100644 --- a/release/models/acl/openconfig-packet-match-types.yang +++ b/release/models/acl/openconfig-packet-match-types.yang @@ -23,7 +23,13 @@ module openconfig-packet-match-types { "This module defines common types for use in models requiring data definitions related to packet matches."; - oc-ext:openconfig-version "1.3.2"; + oc-ext:openconfig-version "1.3.3"; + + revision "2023-01-29" { + description + "Whitespace cleanup."; + reference "1.3.3"; + } revision "2021-07-14" { description @@ -365,5 +371,4 @@ module openconfig-packet-match-types { decimal notation, or using a type defined by the ETHERTYPE identity"; } - } diff --git a/release/models/acl/openconfig-packet-match.yang b/release/models/acl/openconfig-packet-match.yang index a1fcc88ac..c28798664 100644 --- a/release/models/acl/openconfig-packet-match.yang +++ b/release/models/acl/openconfig-packet-match.yang @@ -14,6 +14,8 @@ module openconfig-packet-match { import openconfig-extensions { prefix oc-ext; } import openconfig-mpls-types { prefix oc-mpls; } import openconfig-defined-sets { prefix oc-sets; } + import openconfig-icmpv4-types { prefix oc-icmpv4-types; } + import openconfig-icmpv6-types { prefix oc-icmpv6-types; } // meta organization "OpenConfig working group"; @@ -28,7 +30,14 @@ module openconfig-packet-match { field is omitted from a match expression, the effect is a wildcard ('any') for that field."; - oc-ext:openconfig-version "2.0.0"; + + oc-ext:openconfig-version "2.1.0"; + + revision "2023-03-01" { + description + "Add ICMP Fields for filtering."; + reference "2.1.0"; + } revision "2023-01-27" { description @@ -47,7 +56,7 @@ module openconfig-packet-match { revision "2021-06-16" { description - "Remove trailing whitespace"; + "Remove trailing whitespace."; reference "1.3.1"; } @@ -260,6 +269,20 @@ module openconfig-packet-match { leaf is specified. It is not valid to specify both 'dscp' and 'dscp-set together.'"; } + leaf length { + type uint16; + description + "In the IPv4 header field, this field is known as the Total + Length. Total Length is the length of the datagram, measured + in octets, including internet header and data. + In the IPv6 header field, this field is known as the Payload + Length, which is the length of the IPv6 payload, i.e., the rest + of the packet following the IPv6 header, in octets."; + reference + "RFC 791: Internet Protocol + RFC 8200: Internet Protocol, Version 6 (IPv6) Specification."; + } + leaf protocol { type oc-pkt-match-types:ip-protocol-type; description @@ -346,6 +369,7 @@ module openconfig-packet-match { uses ipv4-protocol-fields-config; uses ipv4-protocol-fields-state; } + uses ip-icmpv4-header-fields-top; } } @@ -430,6 +454,7 @@ module openconfig-packet-match { uses ipv6-protocol-fields-config; uses ipv6-protocol-fields-state; } + uses ip-icmpv6-header-fields-top; } } @@ -593,4 +618,110 @@ module openconfig-packet-match { } } + grouping ip-icmpv4-header-fields-top { + description + "Top grouping for ICMPv4 filtering"; + + container icmpv4 { + description + "Top container for ICMPv4 filtering"; + + container config { + description + "Configuration attributes for ICMPv4 filtering"; + + uses ip-icmpv4-header-fields-config; + } + + container state { + description + "State attributes for ICMPv4 filtering"; + config false; + + uses ip-icmpv4-header-fields-config; + } + } + } + + grouping ip-icmpv6-header-fields-top { + description + "Top grouping for ICMPv6 filtering"; + + container icmpv6 { + description + "Top container for ICMPv6 filtering"; + + container config { + description + "Configuration attributes for ICMPv6 filtering"; + + uses ip-icmpv6-header-fields-config; + } + + container state { + description + "State attributes for ICMPv6 filtering"; + config false; + + uses ip-icmpv6-header-fields-config; + } + } + } + + grouping ip-icmpv4-header-fields-config { + description + "Collection of ICMPv4 header fields that can be + used to set up a match filter."; + + leaf type { + type identityref { + base oc-icmpv4-types:TYPE; + } + description + "ICMPv4 type to be matched."; + reference + "RFC 792: Internet Control Message Protocol"; + } + + leaf code { + type identityref { + base oc-icmpv4-types:CODE; + } + description + "ICMPv4 code to be matched."; + reference + "RFC 792: Internet Control Message Protocol"; + } + } + + grouping ip-icmpv6-header-fields-config { + description + "Collection of ICMPv6 header fields that can be + used to set up a match filter."; + + leaf type { + type identityref { + base oc-icmpv6-types:TYPE; + } + description + "ICMPv6 type to be matched."; + reference + "RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + + leaf code { + type identityref { + base oc-icmpv6-types:CODE; + } + description + "ICMP code to be matched."; + reference + "RFC 4443: Internet Control Message Protocol (ICMPv6) + for Internet Protocol Version 6 (IPv6) + Specification."; + } + } + } From 8d39d412902105064c70c934bbeee443dbafd7b5 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 5 Apr 2023 11:25:54 -0700 Subject: [PATCH 148/372] Add semantic versioning doc and update releases doc. * The semantic versioning doc is imported from the old openconfig.net website, with the section on release bundles removed and merged into the releases doc. * The remaining doc is kept separate in order to separate the concerns of versioning individual models vs. versioning the entirety of OpenConfig models. --- doc/releases.md | 46 ++++++++++++++------ doc/semver.md | 113 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 145 insertions(+), 14 deletions(-) create mode 100644 doc/semver.md diff --git a/doc/releases.md b/doc/releases.md index 31661dd9a..55c06f9b4 100644 --- a/doc/releases.md +++ b/doc/releases.md @@ -1,17 +1,27 @@ # OpenConfig Release Versioning -## Rationale - -As the OpenConfig project matures and is adopted by more implementors and -network operators, model changes are becoming increasingly frequent. This has -made identifying compatible and well-known sets of models more difficult. -Furthermore, uncontrolled and frequent breaking changes can create excessive -burden on implementors and operators alike. - -This revision proposal aims to address these problems by introducing -[semantic versioning](https://semver.org/) to the set of OpenConfig models as a -whole along with some OpenConfig-specific guidelines. As a side note, these -releases are compatible with the notion of +## Background and Motivation + +While each individual OpenConfig model can be tagged with a semantic version +(see [semver.md](semver.md)), models are often interdependent, or need to be +used together, for example when managing a full device. It is therefore useful +to define OpenConfig "releases" that contain a set of models that are designed +to work together. This also enables tracking breaking changes at the repository +level, as well as allowing public users to view and download tagged collections +of self-consistent models (see also the description of +[GitHub releases](https://help.github.com/articles/creating-releases/)). + +In light of the above, this proposal introduces tagging +[semantic versions](https://semver.org/) to the set of all OpenConfig models as +a whole along with some OpenConfig-specific guidelines. Each release is +therefore the cumulative set of models committed to the master branch at a +certain point in time, and is tied to a specific commit in the OpenConfig +repository. YANG validators ensure that each release consists of collection of +published OpenConfig models that work together: that is, interdependencies +(e.g., imports, augments) and cross-references (e.g., leafrefs) are all +resolved. + +As a side note, these releases are compatible with the notion of [YANG release bundles](https://github.com/openconfig/public/blob/master/release/models/catalog/openconfig-module-catalog.yang). ## Policy @@ -43,7 +53,7 @@ releases are compatible with the notion of breaking change since it would cause featureprofile tests that test for the behaviour of the default value without explicitly setting this leaf to begin to fail. As a result, the pull request for this change is not merged until - the end of the quarter in December. In January 2022, a new release is + the end of the quarter in December. In January 2023, a new release is created, versioned `v3.0.0` containing this update. 3. Any non-backward compatible change for a pre-`v1.0.0` YANG module does NOT @@ -51,7 +61,8 @@ releases are compatible with the notion of repository. 4. [Patch releases](https://semver.org/#spec-item-6) may be created at any time - for backward compatible bug fixes. + for backward compatible bug fixes, or equivalently, where only patch number + increases occurred in models. 5. [Pre-releases](https://semver.org/#spec-item-9) may be created at anytime to quickly introduce new changes to the models. These are not intended to be @@ -67,6 +78,9 @@ releases are compatible with the notion of This guideline may change once OpenConfig operators gain more experience managing breaking changes. +7. Release documentation should include the list of models and their version + numbers contained in the corresponding release. + Each release `vx.y.z` (e.g. `v1.2.0`) MAY be given a name for easier human identification, e.g. "September 2022". A client can thus assert they are compatible with the "September 2022" release of OpenConfig. It's expected that @@ -74,6 +88,10 @@ vendors will have some deviations and augments from the baseline; further, some vendors may offer the ability to configure their NOS (network operating system) to support different releases of https://github.com/openconfig/public. +Note that release version numbers need not be a function of individual model +release numbers (e.g., the max version number of all of the models in the +release). + ### Corner-Case Guidelines For non-backward compatible changes involving changing the type of a leaf, the diff --git a/doc/semver.md b/doc/semver.md new file mode 100644 index 000000000..4f2d13052 --- /dev/null +++ b/doc/semver.md @@ -0,0 +1,113 @@ +# Versioning Individual OpenConfig models + +contributors: Anees Shaikh, Josh George, Rob Shakir, Kristian Larsson
+ +## Background and Motivation + +*For versioning the set of all OpenConfig models as a whole, see +[releases.md](releases.md).* + +This document proposes to adopt [Semantic Versioning](http://semver.org/) +(semver) for published OpenConfig YANG models in the same way that software +projects use similar versioning schemes to indicate the maturity and +compatibility of software as it evolves. Semver bases its versioning on an API +contract with developers and users. The basic format of a semver number is +XX.YY.ZZ-release where XX is the major version number, YY is the minor version +number, and ZZ is a patch level. Additional information can be optionally +provided with a suffix. Detailed specification on the semver versioning rules +are available at the [link](http://semver.org/) above. Any non +backward-compatible change to the API requires incrementing the major version +number, while feature changes that do not break clients are indicated by +incrementing the minor version number. Non-feature patches that are backward +compatible are indicated with an increment to the patch number. + +Semantic versioning is proposed as an addition to YANG revision statements for a +number of reasons: + +* YANG language rules state that the API never changes in a + backward-incompatible way. From RFC 6020: “... changes are not allowed if + they have any potential to cause interoperability problems between a client + using an original specification and a server using an updated + specification.” + +This is simply not practical (and is largely motivated by SNMP MIB notions). +YANG models are not mature (less than 5 models have been made IETF RFCs and +these are not implemented by any major device platform). Server and client +implementations are only now being developed and deployed and significantly more +operational experience is needed before APIs can be frozen. + +* YANG revision statements consist of a date and some informational text. As + such, they offer little information about what has changed from one revision + to the next. This is perhaps not surprising when considering the rigid rules + in YANG about guaranteed API compatibility. +* YANG revision statements are meant for human consumption -- they are not + very useful for any sort of programmatic dependency checking. + +Semantic versioning has its +[own issues](https://gist.github.com/jashkenas/cbd2b088e20279ae2c8e) and it may +be that in OpenConfig we will have to adapt the specification somewhat based on +considerations for versioning YANG models. Also semver does not address the +problem of how to version groups of interdependent modules (e.g., a device model +composed of many constituent models). + +Note that we would continue to use revision statements, e.g., with a date set to +the day a new semantic version is published. This allows consumers to continue +to use current YANG constructs such as import by revision. + +## General guidelines for versioning OpenConfig YANG modules + +An immediate question that arises when considering how to version YANG modules +is what criteria should be used to judge that a module is mature enough that an +API contract should be established with a version number. + +According to the semver specification, software that is pre-release with major +version 0 may break clients as long as the major version number remains < 1. +That is, with major version 0, there should be no expectation of compatibility +from one release to another, even if only the minor version number is changing. + +Based on these considerations, the following basic guidelines are proposed for +versioning OpenConfig modules: + +* All modules should start out with a 0 major number. The major number should + remain 0 as long as the model is being reviewed and revised based on + feedback from the OpenConfig operators and from vendors implementing the + model. +* Semver guidelines should be followed while the model is at major number 0, + i.e., API or feature changes should increment the minor number, while minor + fixes should increment the patch number. +* Once a vendor implementation for a model is in progress, the major number + should be changed to 1 to acknowledge that the API is being used by + implementors with correspondingly more disruption likely when the model + changes in incompatible ways. Deciding that vendor implementations are + sufficiently in-progress to justify moving to major version 1 may be + somewhat subjective and should be based on detailed discussions with + implementors to understand what stage they are in their implementations. + +## API changes in YANG modules + +For the purposes of semver, the API presented by a YANG model consists of its +data nodes and corresponding paths. Other elements of the model may not, +strictly speaking, be considered part of the API, but still could have +significant impact on the use of the model by developers or clients. Such +elements include default values, configurability of a node, and behavior of a +given data node (as described by the description statement). + +Since the API of the YANG module is a combination of these explicit and implicit +elements, the criteria for determining when a revision requires a major number +increment is not always straightforward. Below we list some general rules for +determining the API has changed, and consequently would increment the major +version number. + +* Any leaf, leaf-list, list, or container modifications that result in + changing an existing data node name, or the path to a data node (location in + the model) +* Changing the target of a leafref +* Removal of a data node (leaf, leaf-list, list, container) +* Changing the type of a leaf or leaf-list +* Changing a type definition such that data based on the existing typedef + would be invalid (e.g., removing a value from an enumeration, changing the + base type in a typedef, etc.) +* Changing the key of a list (i.e., using a different data node as the list + key) +* Changing a conditional statement, such as when or must, to be more + restrictive, or to be based on a different condition altogether From 41fc6bdc5ecde78682b5a9148daf61e7bccc5d7d Mon Sep 17 00:00:00 2001 From: Adam Simpson <113378487+nokia1adam@users.noreply.github.com> Date: Tue, 11 Apr 2023 04:50:05 +0100 Subject: [PATCH 149/372] Add support for weighted ECMP in ISIS (#821) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add support for weighted ECMP in ISIS. This code is a Contribution to the OpenConfig Public project (“Work”) made under the Google Software Grant and Corporate Contributor License Agreement (“CLA”) and governed by the Apache License 2.0. No other rights or licenses in or to any of Nokia’s intellectual property are granted for any other purpose. This code is provided on an “as is” basis without any warranties of any kind. --- release/models/isis/openconfig-isis-lsp.yang | 9 ++- .../models/isis/openconfig-isis-routing.yang | 9 ++- release/models/isis/openconfig-isis.yang | 63 ++++++++++++++++++- 3 files changed, 77 insertions(+), 4 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index aded4a7aa..225f7a3c7 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.4.1"; + + oc-ext:openconfig-version "1.5.0"; + + revision "2023-03-27" { + description + "Add weighted ecmp."; + reference "1.5.0"; + } revision "2023-03-20" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 662e07126..6954ba1d6 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.4.1"; + oc-ext:openconfig-version "1.5.0"; + + revision "2023-03-27" { + description + "Add weighted ecmp."; + reference "1.5.0"; + } revision "2023-03-20" { description @@ -41,7 +47,6 @@ submodule openconfig-isis-routing { description "Per-level global enabled configuration removed, since it duplicates the level-capability leaf."; - reference "1.3.0"; } diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index ae2e54e1d..72fa3a898 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.4.1"; + oc-ext:openconfig-version "1.5.0"; + + revision "2023-03-27" { + description + "Add weighted ecmp."; + reference "1.5.0"; + } revision "2023-03-20" { description @@ -277,6 +283,16 @@ module openconfig-isis { "ISIS max-paths count."; } + leaf weighted-ecmp { + type boolean; + default "false"; + description + "When set to true, all eligible multipath IS-IS routes associated with + the instance are programmed to use weighted ECMP. An IS-IS route is + eligible for weighted ECMP if all the next-hop interfaces in the + multipath set have a load-balancing-weight other than 'none'."; + } + leaf poi-tlv { type boolean; default false; @@ -833,6 +849,33 @@ module openconfig-isis { } } + grouping isis-interface-weighted-ecmp-config { + description + "This grouping defines ISIS weighted ECMP configuration"; + + leaf load-balancing-weight { + description + "The load-balancing weight of the interface, which applies when + weighted ECMP is enabled and the interface is part of a multipath set."; + type union { + type uint32 { + range "1..4294967295"; + } + type enumeration { + enum "auto" { + description "Load-balancing weight is based on the bandwidth of + the parent interface (port or LAG)"; + } + enum "none" { + description "The interface should not participate in weighted + ECMP"; + } + } + } + default "auto"; + } + } + grouping isis-transport-config { description "This grouping defines configuration parameters relating to the @@ -1289,6 +1332,24 @@ module openconfig-isis { } } + container weighted-ecmp { + description + "This container defines ISIS interface weighted ECMP options"; + + container config { + description + "Configuration parameters relating to weighted ecmp"; + uses isis-interface-weighted-ecmp-config; + } + + container state { + config false; + description + "This container defines state information for weighted ecmp"; + uses isis-interface-weighted-ecmp-config; + } + } + uses oc-bfd:bfd-enable; container bfd { description From 5af88f1cd8c998254b1127469d3a8d26205c4742 Mon Sep 17 00:00:00 2001 From: Roman Dodin Date: Wed, 12 Apr 2023 02:09:50 +0200 Subject: [PATCH 150/372] Clarify `unhealthy-count` of healthz. (#853) * Clarify unhealthy-count of healthz --- .../models/platform/openconfig-platform-healthz.yang | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-healthz.yang b/release/models/platform/openconfig-platform-healthz.yang index 48f747f8a..11e44d36a 100644 --- a/release/models/platform/openconfig-platform-healthz.yang +++ b/release/models/platform/openconfig-platform-healthz.yang @@ -30,7 +30,13 @@ module openconfig-platform-healthz { further diagnostic and debugging informaton from a network device."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; + + revision "2023-04-11" { + description + "Clarification for healthz state transition and unhealthy-count leaf"; + reference "0.1.1"; + } revision "2023-01-23" { description @@ -38,6 +44,7 @@ module openconfig-platform-healthz { reference "0.1.0"; } + grouping platform-health-top { description "Grouping containing health-related parameters."; @@ -114,7 +121,7 @@ module openconfig-platform-healthz { description "The number of status checks that have determined this component to be in an unhealthy state. This counter should be incremented - when the component transitions from the HEALTHY to UNHEALTHY + when the component transitions from the HEALTHY to any other state such that the value reflects the number of times the component has become unhealthy."; oc-ext:telemetry-on-change; From 671855ff16530b4c4ba43eebef882fbc47a83a75 Mon Sep 17 00:00:00 2001 From: Xiao Wang <39514181+xw-g@users.noreply.github.com> Date: Wed, 12 Apr 2023 10:41:26 -0700 Subject: [PATCH 151/372] decap-then-lookup OC schema (#727) * Add policy actions for packet decapsulation controlled by SDN controllers populated network-instance (e.g. via gRIBI). * Add policy action for decap-then-lookup --- .../openconfig-pf-forwarding-policies.yang | 70 ++++++++++++++++++- .../openconfig-pf-interfaces.yang | 8 ++- .../openconfig-pf-path-groups.yang | 7 +- .../openconfig-policy-forwarding.yang | 8 ++- 4 files changed, 88 insertions(+), 5 deletions(-) diff --git a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang index 700fc9180..719401e48 100644 --- a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang +++ b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang @@ -21,7 +21,13 @@ submodule openconfig-pf-forwarding-policies { "This submodule contains configuration and operational state relating to the definition of policy-forwarding policies."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description @@ -264,6 +270,65 @@ submodule openconfig-pf-forwarding-policies { according to the IP destination)."; } + leaf decap-network-instance { + type leafref { + // this must be an absolute reference to allow another NI + // to be referenced. + path "/network-instances/network-instance/config/name"; + } + description + "This leaf is mutually exclusive with ../network-instance. + This leaf should be used along with + ../decap-fallback-network-instance and ../post-decap-network-instance. + This leaf is normally used with NIs (network instances) that are + populated by SDN controllers (e.g. via gRIBI), where we want: + - The decapsulation decision to be controlled by the + controllers. + - The new header after decapsulation is to be looked up in + another NI, and the NI is chosen by fields (e.g. source IP, + DSCP, etc) that are not used for route resolution. + When this leaf is set, packets matching the match criteria for + the forwarding rule should be looked up in the specified NI. + It is expected that the NI should only contain routes that have + next hop action as decapsulation. + - If there is a match, the packet should be decapsulated. + The route lookup on the new header should happen in the + ../post-decap-network-instance. + - If there is no match, the packet should be looked up in the + NI set by ../decap-fallback-network-instance."; + } + + leaf decap-fallback-network-instance { + type leafref { + // this must be an absolute reference to allow another NI + // to be referenced. + path "/network-instances/network-instance/config/name"; + } + description + "This leaf has to be set when ../decap-network-instance is set. + When this leaf is set, the specified NI should be used as a + fallback instance for lookup when + ../decap-network-instance produces no match for the packet. + NI specified by this leaf might contain different mixed next hop + actions (e.g. next hop IP, decapsulation, redirect to another NI, + etc)."; + } + + leaf post-decap-network-instance { + type leafref { + // this must be an absolute reference to allow another NI + // to be referenced. + path "/network-instances/network-instance/config/name"; + } + description + "This leaf can only be set when ../decap-network-instance is set. + When this leaf is set, the specified NI should be used for lookup + on the new header after ../decap-network-instance does decap for + the matched packet. NI specified by this leaf might contain different + mixed next hop actions (e.g. next hop IP, decapsulation, + redirect to another NI, etc)."; + } + leaf network-instance { type leafref { // this must be an absolute reference to allow another NI to be @@ -271,7 +336,8 @@ submodule openconfig-pf-forwarding-policies { path "/network-instances/network-instance/config/name"; } description - "When this leaf is set, packets matching the match criteria + "This leaf is mutually exclusive with ../decap-network-instance. + When this leaf is set, packets matching the match criteria for the forwarding rule should be looked up in the network-instance that is referenced rather than the network-instance with which the interface is associated. diff --git a/release/models/policy-forwarding/openconfig-pf-interfaces.yang b/release/models/policy-forwarding/openconfig-pf-interfaces.yang index ba40fd5e9..868665a89 100644 --- a/release/models/policy-forwarding/openconfig-pf-interfaces.yang +++ b/release/models/policy-forwarding/openconfig-pf-interfaces.yang @@ -19,7 +19,13 @@ submodule openconfig-pf-interfaces { "This submodule contains groupings related to the association between interfaces and policy forwarding rules."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description diff --git a/release/models/policy-forwarding/openconfig-pf-path-groups.yang b/release/models/policy-forwarding/openconfig-pf-path-groups.yang index eff688954..cf5054aa8 100644 --- a/release/models/policy-forwarding/openconfig-pf-path-groups.yang +++ b/release/models/policy-forwarding/openconfig-pf-path-groups.yang @@ -18,8 +18,13 @@ submodule openconfig-pf-path-groups { forwarding entities together to be used as policy forwarding targets."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description "Add GUE and MPLS-in-UDP decapsulation actions."; diff --git a/release/models/policy-forwarding/openconfig-policy-forwarding.yang b/release/models/policy-forwarding/openconfig-policy-forwarding.yang index eec3b1d36..6375d187b 100644 --- a/release/models/policy-forwarding/openconfig-policy-forwarding.yang +++ b/release/models/policy-forwarding/openconfig-policy-forwarding.yang @@ -81,7 +81,13 @@ module openconfig-policy-forwarding { The forwarding action of the corresponding policy is set to PATH_GROUP and references the configured group of LSPs."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-03-27" { + description + "Add support for decap in one NI and further actions in other NIs."; + reference "0.6.0"; + } revision "2022-01-25" { description From 66f4ae885b54270867ea942a7d30751e9029e101 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 17 Apr 2023 16:18:46 -0700 Subject: [PATCH 152/372] Clarify routing table deletion (#833) * Clarify routing table deletion Clarification introduced based on to https://github.com/openconfig/featureprofiles/pull/1253/files#r1136470816 --- .../openconfig-network-instance-l2.yang | 9 ++++++++- .../openconfig-network-instance.yang | 13 +++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 73f24045d..ac23b716b 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.1"; + oc-ext:openconfig-version "4.0.2"; + + revision "2023-03-15" { + description + "Clarify that tables are to be deleted by the + network operating system"; + reference "4.0.2"; + } revision "2023-02-07" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 41b2705d3..29dd6e012 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.1"; + oc-ext:openconfig-version "4.0.2"; + + revision "2023-03-15" { + description + "Clarify that tables are to be deleted by the + network operating system"; + reference "4.0.2"; + } revision "2023-02-07" { description @@ -565,7 +572,9 @@ module openconfig-network-instance { this list when the relevant protocol context is enabled. i.e., when a BGP instance is created with IPv4 and IPv6 address families enabled, the protocol=BGP, - address-family=IPv4 table is created by the system."; + address-family=IPv4 table is created by the system. The + removal of the table should not require additional or + explicit configurations"; leaf protocol { type leafref { From 7728c37332ba80efc08d677282969e40dce90c01 Mon Sep 17 00:00:00 2001 From: aredmon8551 <87078055+aredmon8551@users.noreply.github.com> Date: Mon, 24 Apr 2023 12:02:56 -0400 Subject: [PATCH 153/372] Update QoS AQM thresholds to support relative values (#688) * Update QoS AQM thresholds to support relative values * (M) openconfig-qos-mem-mgmt.yang * (M) openconfig-qos-elements.yang * (M) openconfig-qos-interfaces.yang * (M) openconfig-qos.yang - Add 2 leaves representing percent values for RED min-threshold and max-threshold --------- Co-authored-by: Darren Loher --- .../models/qos/openconfig-qos-elements.yang | 8 +++- .../models/qos/openconfig-qos-interfaces.yang | 8 +++- .../models/qos/openconfig-qos-mem-mgmt.yang | 42 +++++++++++++++---- release/models/qos/openconfig-qos.yang | 8 +++- 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 93a6fbfcc..71ab36f9b 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 7552dc65b..37f6aeb1e 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 5f777d082..8b6c276b0 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description @@ -271,18 +277,40 @@ submodule openconfig-qos-mem-mgmt { type uint64; units bytes; description - "The mininum threshold parameter for a RED-managed queue. When the - average queue length is less than minth, all packets are admitted - to the queue."; + "The mininum threshold parameter for a RED-managed queue in bytes. + When the average queue length is less than minth, all packets are admitted + to the queue. Mututally exclusive with min-threshold-percent and + max-threshold-percent."; } leaf max-threshold { type uint64; units bytes; description - "The maximum threshold parameter for a RED-managed queue. When the - average queue length exceeds the maxth value, all packets are - dropped (or marked if ECN is enabled)."; + "The maximum threshold parameter for a RED-managed queue in bytes. + When the average queue length exceeds the maxth value, all packets are + dropped (or marked if ECN is enabled). Mutually exclusive with + min-threshold-percent and max-threshold-percent."; + } + + leaf min-threshold-percent { + type uint64; + units oc-types:percentage; + description + "The mininum threshold parameter for a RED-managed queue in percent. + When the average queue length is less than minth, all packets are + admitted to the queue. Mutually exclusive with min-threshold and + max-threshold."; + } + + leaf max-threshold-percent { + type uint64; + units oc-types:percentage; + description + "The maximum threshold parameter for a RED-managed queue in percent. + When the average queue length exceeds the maxth value, all packets + are dropped (or marked if ECN is enabled). Mutually exclusive with + min-threshold and max-threshold."; } leaf enable-ecn { diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 70622500f..c6d2b8e4d 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2023-04-17" { + description + "Add support for relative RED min-threshold and max-threshold values."; + reference "0.9.0"; + } revision "2023-02-17" { description From 37a66ddc5bc32f1a78fb734c08a390a2ce2d1dec Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Tue, 25 Apr 2023 11:21:35 -0600 Subject: [PATCH 154/372] #836 fixing description of neighbor RSSI (#862) * #836 fixing description of neighbor RSSI * #836 fixing version --- release/models/wifi/openconfig-wifi-phy.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 86479eb34..796c2fc6f 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.2.1"; + + revision "2023-04-25" { + description + "Update description for neighbor RSSI to specify as a negative numberr"; + reference "1.2.1"; + } revision "2022-09-16" { description @@ -384,7 +390,7 @@ module openconfig-wifi-phy { leaf rssi { type int8; description - "The RSSI of this neighboring BSSID."; + "The RSSI of this neighboring BSSID, expressed as a negative number"; } leaf channel { From 19be716b607a9ac0f9145af994c8d11d63027e77 Mon Sep 17 00:00:00 2001 From: ruoyi-anet <122060264+ruoyi-anet@users.noreply.github.com> Date: Tue, 25 Apr 2023 13:03:32 -0700 Subject: [PATCH 155/372] Added new model for route summary (#783) * Added new model for route summary release/models/network-instance/openconfig-route-summary.yang --------- Co-authored-by: Darren Loher Co-authored-by: Rob Shakir --- release/models/network-instance/.spec.yml | 2 + .../openconfig-route-summary.yang | 112 ++++++++++++++++++ 2 files changed, 114 insertions(+) create mode 100644 release/models/network-instance/openconfig-route-summary.yang diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 615cf82ef..9874ec073 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -5,6 +5,7 @@ - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang - yang/network-instance/openconfig-programming-errors.yang + - yang/network-instance/openconfig-route-summary.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang - yang/segment-routing/openconfig-segment-routing.yang @@ -12,6 +13,7 @@ build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang + - yang/network-instance/openconfig-route-summary.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang run-ci: true diff --git a/release/models/network-instance/openconfig-route-summary.yang b/release/models/network-instance/openconfig-route-summary.yang new file mode 100644 index 000000000..169894b32 --- /dev/null +++ b/release/models/network-instance/openconfig-route-summary.yang @@ -0,0 +1,112 @@ +module openconfig-route-summary { + yang-version "1"; + + namespace "http://openconfig.net/yang/route-summary"; + + prefix "oc-rtsummary"; + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-yang-types { prefix "oc-yang-types"; } + import openconfig-policy-types { prefix "oc-pol-types"; } + import openconfig-network-instance { prefix "oc-ni"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides summary of route counts per route type for each network + instance."; + + oc-ext:openconfig-version "1.0.0"; + + revision "2022-12-21" { + description + "Initial version."; + reference "1.0.0"; + } + + grouping route-counter { + description + "Route type counter item."; + + leaf origin-protocol { + description + "Route type that keys the route count list."; + + type identityref { + base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; + } + } + + container total-count { + description + "A collection of route counts."; + uses total-count; + } + } + + grouping total-count { + description + "A collection of route counts."; + + leaf fib-count { + description + "Total number of routes in the FIB."; + type oc-yang-types:counter64; + } + } + + grouping route-summary { + description + "A summary of route count by route type."; + + list route-count { + key "origin-protocol"; + + description + "Route types that keys the route count list."; + + leaf origin-protocol { + type leafref { + path "../state/origin-protocol"; + } + description + "Reference to the source of the route."; + } + + container state { + description + "State parameters for the route summary list entry."; + uses route-counter; + } + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/oc-ni:ipv6-unicast" { + description + "Augment the network-instance model with the route summary container for + IPv4."; + + container summary { + uses route-summary; + description + "IPv4 route summary for the network instance."; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/oc-ni:ipv4-unicast" { + description + "Augment the network-instance model with the route summary container for + IPv6."; + + container summary { + uses route-summary; + description + "IPv6 route summary for the network instance."; + } + } +} From 90c7b6b1c46bd29bbe76ce86ca541f664538c6c8 Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Wed, 26 Apr 2023 16:52:49 -0700 Subject: [PATCH 156/372] Clarify use of interface-ref throughout models. (#802) * Clarify use of interface-ref throughout models. * (M) **/*.yang - Some implementations of the OpenConfig models today assume that some semantics are assigned to the key of a list of interfaces where the interface-ref type is used. This change clarifies that the interface and subinterface leaves are the authorative specification of which interface is being referenced, NOT the list key which may have arbitrary format. * Update to clarify the following in the comments 1. "interface-id" leaf should use subinterface notation if one exists. 2. Interface-ref is a mandatory requirement for VRF-Selection policy. * Add a clarification and examples for port breakout mode. (#791) * (M) release/models/platform/openconfig-platform-port.yang - Add clarification that a physical channel is defined to be an electrical channel. - Add examples for the existing cases described in the model, as we as a simple 400G->100G breakout case. --------- Co-authored-by: Rob Shakir Co-authored-by: sachendras <44847441+sachendras@users.noreply.github.com> Co-authored-by: Darren Loher --- release/models/acl/openconfig-acl.yang | 19 +++++++-- .../aft/openconfig-aft-network-instance.yang | 8 +++- release/models/bfd/openconfig-bfd.yang | 14 ++++++- .../interfaces/openconfig-interfaces.yang | 27 +++++++++++-- release/models/isis/openconfig-isis-lsp.yang | 7 +++- .../models/isis/openconfig-isis-routing.yang | 8 +++- release/models/isis/openconfig-isis.yang | 15 ++++++- release/models/mpls/openconfig-mpls-igp.yang | 8 +++- release/models/mpls/openconfig-mpls-ldp.yang | 15 ++++++- release/models/mpls/openconfig-mpls-rsvp.yang | 15 ++++++- .../models/mpls/openconfig-mpls-static.yang | 8 +++- release/models/mpls/openconfig-mpls-te.yang | 10 ++++- release/models/mpls/openconfig-mpls.yang | 24 +++++++++-- release/models/multicast/openconfig-igmp.yang | 15 ++++++- release/models/multicast/openconfig-pim.yang | 15 ++++++- .../openconfig-network-instance-l2.yang | 8 +++- .../openconfig-network-instance.yang | 20 ++++++++-- .../openconfig-ospfv2-area-interface.yang | 15 ++++++- .../models/ospf/openconfig-ospfv2-area.yang | 10 ++++- .../models/ospf/openconfig-ospfv2-common.yang | 8 +++- .../models/ospf/openconfig-ospfv2-global.yang | 8 +++- .../models/ospf/openconfig-ospfv2-lsdb.yang | 8 +++- release/models/ospf/openconfig-ospfv2.yang | 8 +++- release/models/pcep/openconfig-pcep.yang | 40 +++++++++++-------- .../platform/openconfig-platform-port.yang | 8 +++- .../openconfig-pf-forwarding-policies.yang | 8 +++- .../openconfig-pf-interfaces.yang | 24 ++++++++--- .../openconfig-pf-path-groups.yang | 8 +++- .../openconfig-policy-forwarding.yang | 8 +++- .../models/qos/openconfig-qos-elements.yang | 8 +++- .../models/qos/openconfig-qos-interfaces.yang | 17 ++++++-- .../models/qos/openconfig-qos-mem-mgmt.yang | 8 +++- release/models/qos/openconfig-qos.yang | 8 +++- .../relay-agent/openconfig-relay-agent.yang | 32 +++++++++------ .../openconfig-segment-routing.yang | 15 ++++++- 35 files changed, 390 insertions(+), 87 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index eabbc761e..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,7 +34,13 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.2"; + oc-ext:openconfig-version "1.3.3"; + + revision "2023-02-06" { + description + "Add clarifying comments on use of interface-ref."; + reference "1.3.3"; + } revision "2023-01-29" { description @@ -247,7 +253,10 @@ module openconfig-acl { container input-interface { description - "Input interface container"; + "Input interface container. The interface is resolved based + on the interface and subinterface leaves of the interface-ref + container, which are references to entries in the /interfaces + list."; container config { description @@ -827,7 +836,11 @@ module openconfig-acl { list interface { key "id"; description - "List of interfaces on which ACLs are set"; + "List of interfaces on which ACLs are set. The interface is resolved + based on the interface and subinterface leaves of the interface-ref + container, which are references to entries in the /interfaces + list. The key of the list is an arbitrary value that the + implementation should not use to resolve an interface name."; leaf id { type leafref { diff --git a/release/models/aft/openconfig-aft-network-instance.yang b/release/models/aft/openconfig-aft-network-instance.yang index 17428ceea..8ac495dcb 100644 --- a/release/models/aft/openconfig-aft-network-instance.yang +++ b/release/models/aft/openconfig-aft-network-instance.yang @@ -19,7 +19,13 @@ module openconfig-aft-network-instance { when building the OpenConfig network instance model to add per-NI AFTs."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "0.3.1"; + } revision "2022-03-29" { description diff --git a/release/models/bfd/openconfig-bfd.yang b/release/models/bfd/openconfig-bfd.yang index 50e516c9f..400d7ab00 100644 --- a/release/models/bfd/openconfig-bfd.yang +++ b/release/models/bfd/openconfig-bfd.yang @@ -26,7 +26,13 @@ module openconfig-bfd { "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) configuration and operational state."; - oc-ext:openconfig-version "0.2.4"; + oc-ext:openconfig-version "0.2.5"; + + revision "2023-02-06" { + description + "Clarify interface references."; + reference "0.2.5"; + } revision "2022-06-28" { description @@ -634,7 +640,11 @@ module openconfig-bfd { key "id"; description - "Per-interface configuration and state parameters for BFD."; + "Per-interface configuration and state parameters for BFD. + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index e6f061746..7d349a07c 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,12 +51,21 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.0.0"; + oc-ext:openconfig-version "3.0.2"; + +revision "2023-02-06" { + description + "Add further specification to interface-ref type to + clarify that the interface and subinterface leaves + are how an interface is referenced, regardless of + context."; + reference "3.0.2"; + } revision "2022-10-25" { description "change loopback-mode to align with available modes"; - reference "3.0.0"; + reference "3.0.1"; } revision "2021-04-06" { @@ -218,7 +227,19 @@ module openconfig-interfaces { container interface-ref { description - "Reference to an interface or subinterface"; + "Reference to an interface or subinterface. The interface + that is being referenced is uniquely referenced based on + the specified interface and subinterface leaves. In contexts + where a Layer 3 interface is to be referenced, both the + interface and subinterface leaves must be populated, as + Layer 3 configuration within the OpenConfig models is + associated with a subinterface. In the case where a + Layer 2 interface is to be referenced, only the + interface is specified. + + The interface/subinterface leaf tuple must be used as + the means by which the interface is specified, regardless + of any other context information (e.g., key in a list)."; container config { description diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 225f7a3c7..8142662e9 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,8 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; + oc-ext:openconfig-version "1.5.1"; - oc-ext:openconfig-version "1.5.0"; + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "1.5.1"; + } revision "2023-03-27" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 6954ba1d6..1dc4a23df 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.5.0"; + oc-ext:openconfig-version "1.5.1"; + + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "1.5.1"; + } revision "2023-03-27" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index 72fa3a898..d4f834a49 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.5.0"; + oc-ext:openconfig-version "1.5.1"; + + revision "2023-04-25" { + description + "Clarify use of the interface-ref type."; + reference "1.5.1"; + } revision "2023-03-27" { description @@ -1244,7 +1250,12 @@ module openconfig-isis { key "interface-id"; description - "This list contains ISIS interfaces."; + "This list contains ISIS interfaces. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index a2f724425..8c1d1d0ab 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,13 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.3.0"; +oc-ext:openconfig-version "3.3.1"; + + revision "2023-02-03" { + description + "Clarify usage of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description diff --git a/release/models/mpls/openconfig-mpls-ldp.yang b/release/models/mpls/openconfig-mpls-ldp.yang index d70e989f1..46fb6c363 100644 --- a/release/models/mpls/openconfig-mpls-ldp.yang +++ b/release/models/mpls/openconfig-mpls-ldp.yang @@ -43,7 +43,13 @@ module openconfig-mpls-ldp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.2.1"; + + revision "2023-02-06" { + description + "Add clarification of use of interface-ref."; + reference "3.2.1"; + } revision "2022-02-21" { description @@ -568,7 +574,12 @@ module openconfig-mpls-ldp { list interface { key "interface-id"; description - "list of per-interface LDP configurations"; + "List of per-interface LDP configurations. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/mpls/openconfig-mpls-rsvp.yang b/release/models/mpls/openconfig-mpls-rsvp.yang index 0efa126d0..2a3fdd79b 100644 --- a/release/models/mpls/openconfig-mpls-rsvp.yang +++ b/release/models/mpls/openconfig-mpls-rsvp.yang @@ -28,7 +28,13 @@ module openconfig-mpls-rsvp { parameters and LSP-specific configuration for constrained-path LSPs"; - oc-ext:openconfig-version "4.0.0"; + oc-ext:openconfig-version "4.0.1"; + + revision "2023-02-06" { + description + "Clarify use of interface-ref."; + reference "4.0.1"; + } revision "2022-03-27" { description @@ -534,7 +540,12 @@ module openconfig-mpls-rsvp { list interface { key "interface-id"; description - "list of per-interface RSVP configurations"; + "List of per-interface RSVP configurations. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index e06ca5361..8bef087e4 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,13 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.3.0"; +oc-ext:openconfig-version "3.3.1"; + + revision "2023-02-03" { + description + "Clarify usage of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index d70cca984..0802208ba 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,13 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.3.0"; + oc-ext:openconfig-version "3.3.1"; + + revision "2023-04-25" { + description + "Add clarifying comments on use of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description @@ -889,7 +895,7 @@ submodule openconfig-mpls-te { "Reference to the address of a previously configured external path computation server."; } - + leaf path-control { type oc-pcep:lsp-control-type; description diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index 0cf49a7b7..86061905b 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -71,7 +71,13 @@ module openconfig-mpls { +-------+ "; - oc-ext:openconfig-version "3.3.0"; + oc-ext:openconfig-version "3.3.1"; + + revision "2023-04-25" { + description + "Clarify usage of interface-ref."; + reference "3.3.1"; + } revision "2022-02-11" { description @@ -438,7 +444,12 @@ module openconfig-mpls { list interface { key "interface-id"; description - "List of TE interfaces"; + "List of TE interfaces. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { @@ -585,13 +596,20 @@ module openconfig-mpls { description "Top level grouping for attributes for MPLS-enabled interfaces."; + container interface-attributes { description "Parameters related to MPLS interfaces"; + list interface { key "interface-id"; description - "List of TE interfaces"; + "List of MPLS-enabled interfaces. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/multicast/openconfig-igmp.yang b/release/models/multicast/openconfig-igmp.yang index 5aa892ad3..4ed7881a8 100644 --- a/release/models/multicast/openconfig-igmp.yang +++ b/release/models/multicast/openconfig-igmp.yang @@ -26,7 +26,13 @@ module openconfig-igmp { description "An OpenConfig model for Internet Group Management Protocol (IGMP)."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2023-02-03" { + description + "Clarify use of interface-ref."; + reference "0.3.1"; + } revision "2021-05-17" { description @@ -303,7 +309,12 @@ module openconfig-igmp { key "interface-id"; description "This container defines interface IGMP configuration and - state information."; + state information. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/multicast/openconfig-pim.yang b/release/models/multicast/openconfig-pim.yang index 7c3b0e83a..56639da97 100644 --- a/release/models/multicast/openconfig-pim.yang +++ b/release/models/multicast/openconfig-pim.yang @@ -27,7 +27,13 @@ module openconfig-pim { description "An OpenConfig model for Protocol Independent Multicast (PIM)."; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.3"; + } revision "2021-06-16" { description @@ -292,7 +298,12 @@ module openconfig-pim { key "interface-id"; description "This container defines interface PIM configuration and - state information."; + state information. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index ac23b716b..3c422d96f 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.2"; + oc-ext:openconfig-version "4.0.3"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "4.0.3"; + } revision "2023-03-15" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 29dd6e012..e1710f31e 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.2"; + oc-ext:openconfig-version "4.0.3"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "4.0.3"; + } revision "2023-03-15" { description @@ -508,7 +514,12 @@ module openconfig-network-instance { key "id"; description - "An interface associated with the network instance"; + "An interface associated with the network instance. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { @@ -672,7 +683,7 @@ module openconfig-network-instance { connection points that can be used for this connection point). The active endpoint is selected based on the precedence that it is configured - with"; + with."; leaf endpoint-id { type leafref { @@ -689,6 +700,7 @@ module openconfig-network-instance { endpoint"; uses instance-endpoint-config; } + container state { config false; description @@ -966,7 +978,7 @@ module openconfig-network-instance { "Configuration parameters relating to an endpoint that is local to the current system"; - uses oc-if:interface-ref-common; + uses oc-if:interface-ref-common; leaf site-id { type uint16; diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 301631321..f34976d97 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description @@ -352,7 +358,12 @@ submodule openconfig-ospfv2-area-interface { key "id"; description - "List of interfaces which are enabled within this area"; + "List of interfaces which are enabled within this area. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index a74ed90fd..fe60d78d4 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,9 +23,15 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; - revision "2022-02-10" { + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } + + revision "2022-02-10" { description "Fix spelling error in retransmission-queue-length leaf."; reference "0.4.0"; diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index d08f1a8d3..fbd7c5886 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index cbbd717a0..37a50b35a 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 546587667..18f6836c8 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index cb73a5802..ebddd64a5 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-03-06" { + description + "Clarify use of interface-ref."; + reference "0.4.1"; + } revision "2022-02-10" { description diff --git a/release/models/pcep/openconfig-pcep.yang b/release/models/pcep/openconfig-pcep.yang index eebbeae88..a6d3c3b0a 100644 --- a/release/models/pcep/openconfig-pcep.yang +++ b/release/models/pcep/openconfig-pcep.yang @@ -60,7 +60,13 @@ module openconfig-pcep { LSP parameters in those PCCs that delegate control over their LSPs to the PCE."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; + + revision "2023-04-25" { + description + "Add clarifying comments on use of interface-ref."; + reference "0.1.1"; + } revision "2022-02-11" { description @@ -140,10 +146,10 @@ module openconfig-pcep { container path-computation-servers { description "Defines PCE server parameters."; - + list path-computation-server { key "pce-server-address"; - + description "Configuration and state information for communication with a PCE server."; @@ -158,24 +164,24 @@ module openconfig-pcep { container config { description "PCE server configuration."; - + uses pce-server-config; } - + container state { config false; description "PCE server state."; - + uses pce-server-config; } - + uses pcep-timers-top; uses pcep-authentication-top; } } } - + grouping pce-server-config { description "Configuration data for establishing a PCEP session with pce servers."; @@ -188,7 +194,7 @@ module openconfig-pcep { When multiple candidate servers are specified for a single client, they are prioritized according to preference."; } - + leaf id { type string; description @@ -207,14 +213,14 @@ module openconfig-pcep { description "The source IP address used by PCC(Router) to establish PCEP session."; } - + leaf pce-type { type pce-mode-type; description "The type of PCEP capability supported which is advertised in the Open message when a PCEP session is established."; } - + leaf preference { type uint8; description @@ -233,7 +239,7 @@ module openconfig-pcep { for LSPs that are not controlled by any PCE (for example, LSPs that are statically configured at the PCC) but without delegating them."; } - + leaf pce-initiated-capability { type boolean; default false; @@ -241,7 +247,7 @@ module openconfig-pcep { "Indicates to PCE that PCC (Router) supports PCE-initiated LSP paths instantiation. A PCE can initiate LSPs only for PCCs that advertised this capability."; } - + leaf sr-support { type boolean; default false; @@ -305,7 +311,7 @@ module openconfig-pcep { before revoking LSP delegation and attempting to redelegate LSPs associated with the terminated PCEP session to an alternate PCE."; } - + leaf state-timeout-interval { type uint16; units seconds; @@ -315,7 +321,7 @@ module openconfig-pcep { and reverting to operator-defined default parameters or behaviors."; } } - + grouping pcep-authentication-top { description "Grouping containing PCEP authentication attributes"; @@ -336,7 +342,7 @@ module openconfig-pcep { } } } - + grouping pcep-authentication-config { description "PCEP authentication parameters container."; @@ -364,7 +370,7 @@ module openconfig-pcep { PCEP session"; } } - + grouping pcep-top { description "Top-level grouping for PCEP configuration."; diff --git a/release/models/platform/openconfig-platform-port.yang b/release/models/platform/openconfig-platform-port.yang index 68f5eabd5..effb85bb7 100644 --- a/release/models/platform/openconfig-platform-port.yang +++ b/release/models/platform/openconfig-platform-port.yang @@ -24,7 +24,13 @@ module openconfig-platform-port { "This module defines data related to PORT components in the openconfig-platform model"; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.0.1"; + + revision "2023-03-22" { + description + "Clarify use of the interface-ref type."; + reference "1.0.1"; + } revision "2023-01-19" { description diff --git a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang index 719401e48..9485ab3c4 100644 --- a/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang +++ b/release/models/policy-forwarding/openconfig-pf-forwarding-policies.yang @@ -21,7 +21,13 @@ submodule openconfig-pf-forwarding-policies { "This submodule contains configuration and operational state relating to the definition of policy-forwarding policies."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description diff --git a/release/models/policy-forwarding/openconfig-pf-interfaces.yang b/release/models/policy-forwarding/openconfig-pf-interfaces.yang index 868665a89..705e7f795 100644 --- a/release/models/policy-forwarding/openconfig-pf-interfaces.yang +++ b/release/models/policy-forwarding/openconfig-pf-interfaces.yang @@ -19,7 +19,13 @@ submodule openconfig-pf-interfaces { "This submodule contains groupings related to the association between interfaces and policy forwarding rules."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description @@ -88,7 +94,12 @@ submodule openconfig-pf-interfaces { description "Configuration and operationals state relating to the relationship between interfaces and policy-based forwarding - rules."; + rules. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { @@ -157,9 +168,12 @@ submodule openconfig-pf-interfaces { path "../../../../policies/policy/config/policy-id"; } description - "Apply the specific VRF selection policy on the interface. The referenced policy - MUST be of type VRF_SELECTION_POLICY. The VRF selection policy may coexist with - a policy-forwarding policy. + "Apply the specific VRF selection policy on the interface. + The referenced Interface must be resolved using the Interface + and Sub-interface leaves. + + The referenced policy MUST be of the type VRF_SELECTION_POLICY. + The VRF selection policy may coexist with a policy-forwarding policy. The policy specified in this leaf is used to specifically choose the L3VRF network instance that is used for specific input criteria of packets."; diff --git a/release/models/policy-forwarding/openconfig-pf-path-groups.yang b/release/models/policy-forwarding/openconfig-pf-path-groups.yang index cf5054aa8..c1c9283cb 100644 --- a/release/models/policy-forwarding/openconfig-pf-path-groups.yang +++ b/release/models/policy-forwarding/openconfig-pf-path-groups.yang @@ -18,7 +18,13 @@ submodule openconfig-pf-path-groups { forwarding entities together to be used as policy forwarding targets."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description diff --git a/release/models/policy-forwarding/openconfig-policy-forwarding.yang b/release/models/policy-forwarding/openconfig-policy-forwarding.yang index 6375d187b..c6d37209a 100644 --- a/release/models/policy-forwarding/openconfig-policy-forwarding.yang +++ b/release/models/policy-forwarding/openconfig-policy-forwarding.yang @@ -81,7 +81,13 @@ module openconfig-policy-forwarding { The forwarding action of the corresponding policy is set to PATH_GROUP and references the configured group of LSPs."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.6.1"; + + revision "2023-04-25" { + description + "Clarify use of interface-ref."; + reference "0.6.1"; + } revision "2023-03-27" { description diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 71ab36f9b..e679f6fe6 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 37f6aeb1e..eca7a5e21 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description @@ -877,7 +883,7 @@ submodule openconfig-qos-interfaces { container output { description "Top-level container for QoS data related to the egress - interface"; + interface."; container config { description @@ -913,7 +919,12 @@ submodule openconfig-qos-interfaces { list interface { key "interface-id"; description - "List of interfaces referenced by QoS entities."; + "List of interfaces referenced by QoS entities. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 8b6c276b0..ef7b324f6 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index c6d2b8e4d..a01610cfe 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.9.1"; + + revision "2023-04-25" { + description + "Clarify interface-ref usage."; + reference "0.9.1"; + } revision "2023-04-17" { description diff --git a/release/models/relay-agent/openconfig-relay-agent.yang b/release/models/relay-agent/openconfig-relay-agent.yang index f2f6181aa..22889af66 100644 --- a/release/models/relay-agent/openconfig-relay-agent.yang +++ b/release/models/relay-agent/openconfig-relay-agent.yang @@ -27,7 +27,13 @@ module openconfig-relay-agent { packets. The supports both DHCP and DHCPv6 and device-wide and per-interface settings."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.1.2"; + + revision "2023-02-06" { + description + "Clarify usage of interface-ref."; + reference "0.1.2"; + } revision "2018-11-21" { description @@ -87,7 +93,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -164,7 +169,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -282,7 +286,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -312,7 +315,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -377,7 +379,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -422,7 +423,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -678,7 +678,12 @@ module openconfig-relay-agent { key "id"; description "List of interfaces on which the relay agent is - configured."; + configured. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { @@ -696,7 +701,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -766,7 +770,12 @@ module openconfig-relay-agent { key "id"; description "List of interfaces on which the relay agent is - configured."; + configured. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf id { type leafref { @@ -784,7 +793,6 @@ module openconfig-relay-agent { } container state { - config false; description @@ -822,4 +830,4 @@ module openconfig-relay-agent { // augment statements -} \ No newline at end of file +} diff --git a/release/models/segment-routing/openconfig-segment-routing.yang b/release/models/segment-routing/openconfig-segment-routing.yang index ebb931048..e40e57bda 100644 --- a/release/models/segment-routing/openconfig-segment-routing.yang +++ b/release/models/segment-routing/openconfig-segment-routing.yang @@ -35,7 +35,13 @@ module openconfig-segment-routing { - SR SID advertisements - instantiated within the relevant IGP. - SR-specific counters - instantied within the relevant dataplane."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "0.3.2"; + + revision "2023-02-06" { + description + "Clarify use of interface-ref."; + reference "0.3.2"; + } revision "2021-07-28" { description @@ -332,7 +338,12 @@ module openconfig-segment-routing { description "Parameters and MPLS-specific configuration relating to Segment - Routing on an interface."; + Routing on an interface. + + The interface referenced is based on the interface and + subinterface leaves within the interface-ref container - + which reference an entry in the /interfaces/interface list - + and should not rely on the value of the list key."; leaf interface-id { type leafref { From 20e964b5f84ff21845ab885ea4a700d740f0b2a2 Mon Sep 17 00:00:00 2001 From: Michael Ore Date: Mon, 1 May 2023 15:02:02 -0400 Subject: [PATCH 157/372] Add atomic annotations to containers in openconfig-aft. (#860) Changes to be committed: modified: openconfig-aft-common.yang modified: openconfig-aft-ethernet.yang modified: openconfig-aft-ipv4.yang modified: openconfig-aft-ipv6.yang modified: openconfig-aft-mpls.yang modified: openconfig-aft-pf.yang Add the atomic attribute to the above aft yang containers. --------- Co-authored-by: Dan Rautio --- release/models/aft/openconfig-aft-common.yang | 10 +++++++++- release/models/aft/openconfig-aft-ethernet.yang | 9 ++++++++- release/models/aft/openconfig-aft-ipv4.yang | 9 ++++++++- release/models/aft/openconfig-aft-ipv6.yang | 9 ++++++++- release/models/aft/openconfig-aft-mpls.yang | 9 ++++++++- release/models/aft/openconfig-aft-pf.yang | 9 ++++++++- release/models/aft/openconfig-aft-state-synced.yang | 8 +++++++- release/models/aft/openconfig-aft.yang | 8 +++++++- 8 files changed, 63 insertions(+), 8 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 3d4b86cb7..b2c44dad6 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -154,6 +160,7 @@ submodule openconfig-aft-common { list next-hop { key "index"; + oc-ext:telemetry-atomic; description "A next-hop associated with the forwarding instance."; @@ -417,6 +424,7 @@ submodule openconfig-aft-common { list next-hop-group { key "id"; + oc-ext:telemetry-atomic; description "An individual set of next-hops grouped into a common group. Each entry within an abstract forwarding table points to a diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 57ef4205f..d0b85dfc7 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -137,6 +143,7 @@ submodule openconfig-aft-ethernet { list mac-entry { key "mac-address"; + oc-ext:telemetry-atomic; description "List of the Ethernet entries within the abstract forwarding table. This list is keyed by the outer MAC address diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index e43766513..04d4054c2 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -136,6 +142,7 @@ submodule openconfig-aft-ipv4 { list ipv4-entry { key "prefix"; + oc-ext:telemetry-atomic; description "List of the IPv4 unicast entries within the abstract forwarding table. This list is keyed by the destination IPv4 diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 4c9448213..6b6cd1937 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -137,6 +143,7 @@ submodule openconfig-aft-ipv6 { list ipv6-entry { key "prefix"; + oc-ext:telemetry-atomic; description "List of the IPv6 unicast entries within the abstract forwarding table. This list is keyed by the destination IPv6 diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 2eb2ccfc8..4b4fd828c 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -138,6 +144,7 @@ submodule openconfig-aft-mpls { list label-entry { key "label"; + oc-ext:telemetry-atomic; description "List of the MPLS entries within the abstract forwarding table. This list is keyed by the top-most MPLS diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 59cd45fc8..85ee9d78f 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description @@ -145,6 +151,7 @@ submodule openconfig-aft-pf { list policy-forwarding-entry { key "index"; + oc-ext:telemetry-atomic; description "List of the policy forwarding entries within the abstract forwarding table. Each entry is uniquely identified by an diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index e99163afe..a20dd9257 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,13 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index d601d6910..c204271de 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2023-04-19" { + description + "Add atomic attribute to AFT containers."; + reference "2.3.0"; + } revision "2022-06-16" { description From 30c91d20808c726d1d313224fcb6459221312df1 Mon Sep 17 00:00:00 2001 From: Benson Schliesser Date: Mon, 1 May 2023 17:49:57 -0400 Subject: [PATCH 158/372] Fix typos in openconfig-mpls-te.yang (#864) * fixed typo CSFP to CSPF in openconfig-mpls-te.yang --- release/models/mpls/openconfig-mpls-igp.yang | 8 +++++++- release/models/mpls/openconfig-mpls-static.yang | 8 +++++++- release/models/mpls/openconfig-mpls-te.yang | 12 +++++++++--- release/models/mpls/openconfig-mpls.yang | 8 +++++++- 4 files changed, 30 insertions(+), 6 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index 8c1d1d0ab..157d443b8 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,13 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; -oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-02-03" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index 8bef087e4..268d643a5 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,13 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; -oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-02-03" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index 0802208ba..9553b7d86 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,13 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-04-25" { description @@ -878,7 +884,7 @@ submodule openconfig-mpls-te { type cspf-tie-breaking; description "Determine the tie-breaking method to choose between - equally desirable paths during CSFP computation"; + equally desirable paths during CSPF computation"; } leaf path-computation-server { @@ -896,7 +902,7 @@ submodule openconfig-mpls-te { external path computation server."; } - leaf path-control { + leaf path-control { type oc-pcep:lsp-control-type; description "Set the LSP path control mode as PCE_DELEGATED diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index 86061905b..85ca939dd 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -71,7 +71,13 @@ module openconfig-mpls { +-------+ "; - oc-ext:openconfig-version "3.3.1"; + oc-ext:openconfig-version "3.3.2"; + + revision "2023-04-28" { + description + "Fixed typo in cspf-tiebreaker leaf description"; + reference "3.3.2"; + } revision "2023-04-25" { description From 9c33b62f89dc0aee60783135f6e8da98991218bc Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Mon, 1 May 2023 16:23:23 -0700 Subject: [PATCH 159/372] Add isis total-lsp count (#831) * Update release/models/isis/openconfig-isis.yang *Add total-lsps leaf to count ISIS lsp's per level --- release/models/isis/openconfig-isis-lsp.yang | 8 +++++++- release/models/isis/openconfig-isis-routing.yang | 8 +++++++- release/models/isis/openconfig-isis.yang | 14 +++++++++++++- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 8142662e9..a8415a632 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.5.1"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-05-01" { + description + "Add ISIS total-lsps counter."; + reference "1.6.0"; + } revision "2023-04-25" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 1dc4a23df..df8af637b 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.5.1"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-05-01" { + description + "Add ISIS total-lsps counter."; + reference "1.6.0"; + } revision "2023-04-25" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index d4f834a49..a27a82f76 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.5.1"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-05-01" { + description + "Add ISIS total-lsps counter."; + reference "1.6.0"; + } revision "2023-04-25" { description @@ -2035,6 +2041,12 @@ module openconfig-isis { description "IS-IS counters that are relevant to the system IS-IS context."; + leaf total-lsps { + type oc-yang:counter32; + description + "Number of LSPs in the database at the system level."; + } + leaf corrupted-lsps { type oc-yang:counter32; description From bec0ac781632499a5092c94ed7089b9fe9b37bba Mon Sep 17 00:00:00 2001 From: missaesasaya Date: Tue, 2 May 2023 16:48:04 -0300 Subject: [PATCH 160/372] Fix openconfig-icmpv6-types module prefix (#866) Co-authored-by: Missae W. Sasaya --- release/models/acl/openconfig-icmpv6-types.yang | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/release/models/acl/openconfig-icmpv6-types.yang b/release/models/acl/openconfig-icmpv6-types.yang index 3b263a9d3..ecd77cabf 100644 --- a/release/models/acl/openconfig-icmpv6-types.yang +++ b/release/models/acl/openconfig-icmpv6-types.yang @@ -3,7 +3,7 @@ module openconfig-icmpv6-types { yang-version "1"; namespace "http://openconfig.net/yang/openconfig-icmpv6-types"; - prefix "oc-icmpv4-types"; + prefix "oc-icmpv6-types"; import openconfig-extensions { prefix oc-ext; } @@ -17,7 +17,13 @@ module openconfig-icmpv6-types { "OpenConfig module defining the types and coresponding subcodes for ICMPv6."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; + + revision "2023-05-02" { + description + "Fix module prefix."; + reference "0.1.1"; + } revision "2023-01-26" { description From f2a75367e040eb5787236ca458ca3527048c7693 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Thu, 4 May 2023 12:32:40 -0700 Subject: [PATCH 161/372] Add system wide support for utilization thresholds config (#817) --- .../platform/openconfig-platform-common.yang | 49 +++++--- .../openconfig-platform-linecard.yang | 10 +- .../models/platform/openconfig-platform.yang | 13 +- release/models/system/.spec.yml | 2 + .../system/openconfig-system-utilization.yang | 115 ++++++++++++++++++ 5 files changed, 166 insertions(+), 23 deletions(-) create mode 100644 release/models/system/openconfig-system-utilization.yang diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 9bb8cd140..d0195804b 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,14 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.22.0"; + oc-ext:openconfig-version "0.23.0"; + + revision "2023-02-13" { + description + "Refactor resource utilization threshold config into a separate grouping. + Update 'utilization resource' to 'resource utilization'."; + reference "0.23.0"; + } revision "2022-12-20" { description @@ -80,13 +87,13 @@ submodule openconfig-platform-common { // grouping statements - grouping platform-utilization-top { + grouping platform-resource-utilization-top { description - "Top level of utilization."; + "Top level grouping of platform resource utilization."; container utilization { description - "Utilization of the component."; + "Resource utilization of the component."; container resources { description @@ -109,7 +116,7 @@ submodule openconfig-platform-common { description "Configuration data for each resource."; - uses platform-utilization-resource-config; + uses platform-resource-utilization-config; } container state { @@ -117,24 +124,17 @@ submodule openconfig-platform-common { description "Operational state data for each resource."; - uses platform-utilization-resource-config; - uses platform-utilization-resource-state; + uses platform-resource-utilization-config; + uses platform-resource-utilization-state; } } } } } - grouping platform-utilization-resource-config { + grouping resource-utilization-threshold-common { description - "Configuration data for utilization resource."; - - leaf name { - type string; - description - "Resource name within the component."; - } - + "Common threshold configuration model for resource utilization."; leaf used-threshold-upper { type oc-types:percentage; description @@ -150,9 +150,22 @@ submodule openconfig-platform-common { } } - grouping platform-utilization-resource-state { + grouping platform-resource-utilization-config { + description + "Configuration data for resource utilization."; + + leaf name { + type string; + description + "Resource name within the component."; + } + + uses resource-utilization-threshold-common; + } + + grouping platform-resource-utilization-state { description - "Operational state data for utilization resource."; + "Operational state data for resource utilization."; leaf used { type uint64; diff --git a/release/models/platform/openconfig-platform-linecard.yang b/release/models/platform/openconfig-platform-linecard.yang index 8ac1cfbcd..46c5d2ccd 100644 --- a/release/models/platform/openconfig-platform-linecard.yang +++ b/release/models/platform/openconfig-platform-linecard.yang @@ -22,7 +22,13 @@ module openconfig-platform-linecard { "This module defines data related to LINECARD components in the openconfig-platform model"; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; + + revision "2023-02-13" { + description + "Renamed platform-utilization-top to platform-resource-utilization-top."; + reference "1.1.0"; + } revision "2022-07-28" { description @@ -115,7 +121,7 @@ module openconfig-platform-linecard { uses linecard-config; uses linecard-state; } - uses oc-platform:platform-utilization-top; + uses oc-platform:platform-resource-utilization-top; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 4a6d874b7..7a1488ba4 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,14 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.22.0"; + oc-ext:openconfig-version "0.23.0"; + + revision "2023-02-13" { + description + "Refactor resource utilization threshold config into a separate grouping. + Update 'utilization resource' to 'resource utilization'."; + reference "0.23.0"; + } revision "2022-12-20" { description @@ -922,7 +929,7 @@ module openconfig-platform { "Operational state data for chassis components"; } - uses platform-utilization-top; + uses platform-resource-utilization-top; } // TODO(aashaikh): linecard container is already defined in @@ -1078,7 +1085,7 @@ module openconfig-platform { "Operational state data for chip components"; } - uses platform-utilization-top; + uses platform-resource-utilization-top; } container backplane { diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index f66b1b875..f1f5b62a1 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -5,6 +5,7 @@ - yang/system/openconfig-system.yang - yang/system/openconfig-system-terminal.yang - yang/system/openconfig-system-logging.yang + - yang/system/openconfig-system-utilization.yang - yang/system/openconfig-procmon.yang - yang/system/openconfig-aaa.yang - yang/system/openconfig-aaa-tacacs.yang @@ -16,6 +17,7 @@ - yang/system/openconfig-system-controlplane.yang build: - yang/system/openconfig-system.yang + - yang/system/openconfig-system-utilization.yang run-ci: true - name: openconfig-system-ext build: diff --git a/release/models/system/openconfig-system-utilization.yang b/release/models/system/openconfig-system-utilization.yang new file mode 100644 index 000000000..08d1c8160 --- /dev/null +++ b/release/models/system/openconfig-system-utilization.yang @@ -0,0 +1,115 @@ +module openconfig-system-utilization { + yang-version "1"; + + namespace "http://openconfig.net/yang/system-utilization"; + prefix "oc-sys-util"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { prefix oc-sys; } + import openconfig-platform { prefix oc-platform; } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state for + system wide resource utilization thresholds."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-02-13" { + description + "Add system wide utilization thresholds."; + reference + "0.1.0"; + } + + grouping system-resource-utilization-config { + description + "Configuration data for resource utilization. The configuration added here should + apply across all of the components that matches the respective resource. + /components/component/*/utilization/resources/resource/name"; + + + leaf name { + type string; + description + "Resource name within the system."; + } + + uses oc-platform:resource-utilization-threshold-common; + } + + grouping system-resource-utilization-state { + description + "State data for resource utilization."; + + leaf-list active-component-list { + type leafref { + path "/oc-platform:components/oc-platform:component/oc-platform:config/oc-platform:name"; + } + + description + "List of references to each component which has this resource."; + } + } + + grouping system-resource-utilization-top { + description + "Top level grouping for system wide configuration of resources for + all components."; + + container "utilization" { + description + "System wide resource utilization configuration."; + + container "resources" { + description + "Enclosing container for the resources in the entire system. The system + resource names should be aggregated from the following collections: + + * /components/component/chassis/utilization/resources/resource + * /components/component/integrate-circuit/utilization/resources/resource + * /components/component/linecard/utilization/resources/resource."; + + list "resource" { + key "name"; + description + "The list of all resources across all platform components keyed by + resource name."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the resource name."; + } + + container "config" { + description + "Configuration data for resource utilization."; + uses system-resource-utilization-config; + } + + container "state" { + config false; + description + "Operational state data for resource utilization."; + + uses system-resource-utilization-config; + uses system-resource-utilization-state; + } + } + } + } + } + + augment "/oc-sys:system" { + description + "Add system resource utilization."; + uses system-resource-utilization-top; + } +} From aec94a15243712da1d236e2d5c30434dcb7ccff9 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Tue, 16 May 2023 13:46:03 -0400 Subject: [PATCH 162/372] Change control-plane-vnis property to leaf-list (#840) * Change control-plane-vnis property to leaf-list --- .../models/network-instance/openconfig-evpn.yang | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index 93c18972c..a2fbdd7f8 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,9 +40,15 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; - revision "2023-01-24" { + revision "2023-03-08" { + description + "Change control-plane-vnis property to leaf-list"; + reference "0.5.0"; + } + + revision "2023-01-24" { description "Add control word support"; reference "0.4.0"; @@ -1175,8 +1181,8 @@ module openconfig-evpn { the remote VTEP peer was discovered."; } - leaf control-plane-vnis { - type string; + leaf-list control-plane-vnis { + type oc-evpn-types:vni-id; description "The control-plane VNIs are all of the VNIs that are discovered by the control-plane behind this peer VTEP"; From 3327d5dbe28c5233b1b6fb0aa705763b714a584b Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Thu, 18 May 2023 10:27:10 -0600 Subject: [PATCH 163/372] Adding total frame counts for retry calculations #786 (#812) * Adding total frame counts for retry calculations #786 * Adding total frame counts for retry calculations #786 --- release/models/wifi/openconfig-wifi-mac.yang | 57 +++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index bac0cb419..fb0699619 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,13 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-02-14" { + description + "Adds totals to retry metrics to calculate retry percentages."; + reference "1.3.0"; + } revision "2023-01-17" { description @@ -861,11 +867,24 @@ module openconfig-wifi-mac { within this BSS."; } + leaf rx-total-frames { + type oc-yang:counter64; + description + "Total number of received frames within this BSS."; + } + leaf rx-retries-data { type oc-yang:counter64; description "Number of received QoS Data frames with the Retry bit set"; } + + leaf rx-total-data { + type oc-yang:counter64; + description + "Number of received QoS Data frames"; + } + leaf rx-retries-subframe { type oc-yang:counter64; description @@ -873,6 +892,12 @@ module openconfig-wifi-mac { and require retransmission."; } + leaf rx-total-subframe { + type oc-yang:counter64; + description + "Total Aggregated MPDUs received"; + } + leaf rx-bytes-data { type oc-yang:counter64; description @@ -1132,6 +1157,12 @@ module openconfig-wifi-mac { "Number of frames transmitted with the Retry bit set"; } + leaf tx-total-frames { + type oc-yang:counter64; + description + "Number of frames transmitted"; + } + leaf tx-retries-data { type oc-yang:counter64; description @@ -1139,6 +1170,12 @@ module openconfig-wifi-mac { set"; } + leaf tx-total-data { + type oc-yang:counter64; + description + "Number of transmitted QoS Data frames"; + } + leaf tx-retries-subframe { type oc-yang:counter64; description @@ -1146,6 +1183,12 @@ module openconfig-wifi-mac { and require retransmission."; } + leaf tx-total-subframe { + type oc-yang:counter64; + description + "Aggregated MPDUs total frames transmitted."; + } + leaf tx-bytes-data { type oc-yang:counter64; description @@ -1195,11 +1238,23 @@ module openconfig-wifi-mac { "Rx retried frames from this client."; } + leaf rx-total { + type oc-yang:counter64; + description + "Rx frames from this client."; + } + leaf tx-retries { type oc-yang:counter64; description "Tx retried frames to this client."; } + + leaf tx-total { + type oc-yang:counter64; + description + "Tx frames to this client."; + } } } From 3e9157cb94225c46e2006acbe14d3e2034574614 Mon Sep 17 00:00:00 2001 From: Nathan Kitchen Date: Wed, 24 May 2023 13:08:53 -0700 Subject: [PATCH 164/372] Allow transceiver vendor-rev values up to length 4 (#868) SFF-8472, the spec for the management interface of SFP+ transceivers, specifies that the vendor revision number is a 4-byte field --- .../platform/openconfig-platform-transceiver.yang | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index cd460ce3b..388953b49 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.10.1"; + oc-ext:openconfig-version "0.11.0"; + + revision "2023-05-03" { + description + "Increase max length of vendor-rev to 4."; + reference "0.11.0"; + } revision "2023-02-10" { description @@ -601,10 +607,10 @@ module openconfig-platform-transceiver { leaf vendor-rev { type string { - length 1..2; + length 1..4; } description - "Transceiver vendor's revision number. 2-octet field that + "Transceiver vendor's revision number. Field of 1 to 4 octets that contains ASCII characters, left-aligned and padded on the right with ASCII spaces (20h)"; } From 5c3a90c948f933626acf95148a34936e47d0a722 Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Thu, 25 May 2023 10:57:42 -0700 Subject: [PATCH 165/372] Add IPv4 address type (#872) Add ipv4-address-type supporting PRIMARY and SECONDARY values used when there is more than one IP address on an interface --- .../models/interfaces/openconfig-if-ip.yang | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 6bb2354b9..a0b74fee9 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.2.0"; + oc-ext:openconfig-version "3.3.0"; + + revision "2023-04-12" { + description + "Add ipv4 address type configuration."; + reference "3.3.0"; + } revision "2023-02-06" { description @@ -173,6 +179,24 @@ module openconfig-if-ip { "The origin of a neighbor entry."; } + typedef ipv4-address-type { + type enumeration { + enum PRIMARY { + description + "The primary address on the interface. There can only be one primary + address associated on an interface."; + } + enum SECONDARY { + description + "Secondary address on an interface. There can be multiple secondary + addresses associated on an interface."; + } + } + + description + "The type of an IPv4 address."; + } + // grouping statements grouping ip-common-global-config { @@ -390,7 +414,6 @@ module openconfig-if-ip { } grouping ipv4-address-config { - description "Per IPv4 adresss configuration data for the interface."; @@ -408,6 +431,16 @@ module openconfig-if-ip { description "The length of the subnet prefix."; } + + leaf type { + type ipv4-address-type; + default PRIMARY; + description + "Specifies the explicit type of the IPv4 address being assigned + to the interface. By default, addresses are assumed to be a primary address. + Where secondary addresses is to be configured, this leaf should be set + to SECONDARY."; + } } grouping ipv4-neighbor-config { @@ -526,7 +559,7 @@ module openconfig-if-ip { default GLOBAL_UNICAST; description "Specifies the explicit type of the IPv6 address being assigned - to the subinterface. By default, addresses are assumed to be + to the interface. By default, addresses are assumed to be global unicast. Where a link-local address is to be explicitly configured, this leaf should be set to LINK_LOCAL."; } From d1f77330648a3f6a8daac1cb6f16302007d5da92 Mon Sep 17 00:00:00 2001 From: Alex Webster <31635844+awebsters@users.noreply.github.com> Date: Tue, 30 May 2023 20:46:45 -0400 Subject: [PATCH 166/372] Set metric type leaf (#863) * adding set-metric-type field to policy match condition --- release/models/isis/openconfig-isis-policy.yang | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/release/models/isis/openconfig-isis-policy.yang b/release/models/isis/openconfig-isis-policy.yang index 3f373d041..21ee06eb7 100644 --- a/release/models/isis/openconfig-isis-policy.yang +++ b/release/models/isis/openconfig-isis-policy.yang @@ -26,7 +26,13 @@ module openconfig-isis-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + + revision "2023-04-28" { + description + "Adding set metric-type leaf"; + reference "0.7.0"; + } revision "2023-02-27" { description @@ -144,6 +150,12 @@ module openconfig-isis-policy { to an IS-IS instance that has multiple levels configured within it"; } + + leaf set-metric-type { + type isis-types:metric-type; + description + "Set the type of the route to redistribute to INTERNAL or EXTERNAL"; + } } grouping isis-actions { From 1438858ca689d31128c022e0f6ef7b33590640a1 Mon Sep 17 00:00:00 2001 From: Benson Schliesser Date: Tue, 6 Jun 2023 18:27:24 -0400 Subject: [PATCH 167/372] removing unused LOG_DESTINATION_TYPE identities (#869) (M) release/models/system/openconfig-system-logging.yang * removing unused LOG_DESTINATION_TYPE identities from openconfig-system-logging --- .../system/openconfig-system-logging.yang | 37 ++++--------------- 1 file changed, 7 insertions(+), 30 deletions(-) diff --git a/release/models/system/openconfig-system-logging.yang b/release/models/system/openconfig-system-logging.yang index 299838908..3fcc7c5cd 100644 --- a/release/models/system/openconfig-system-logging.yang +++ b/release/models/system/openconfig-system-logging.yang @@ -23,7 +23,13 @@ module openconfig-system-logging { "This module defines configuration and operational state data for common logging facilities on network systems."; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-05-04" { + description + "removing LOG_DESTINATION_TYPE identities"; + reference "0.5.0"; + } revision "2022-12-29" { description @@ -226,35 +232,6 @@ module openconfig-system-logging { "IETF RFC 5424 - The Syslog Protocol"; } - identity LOG_DESTINATION_TYPE { - description - "Base identity for destination for logging messages"; - } - - identity DEST_CONSOLE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to the console"; - } - - identity DEST_BUFFER { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to and in-memory circular buffer"; - } - - identity DEST_FILE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to a local file"; - } - - identity DEST_REMOTE { - base LOG_DESTINATION_TYPE; - description - "Directs log messages to a remote syslog server"; - } - // typedef statements typedef syslog-severity { From 15ca44425081bbe8e32db61fc320c023a3888c42 Mon Sep 17 00:00:00 2001 From: "Missae W. Sasaya" Date: Thu, 8 Jun 2023 13:55:03 -0300 Subject: [PATCH 168/372] Large communities in send-community leaf (#852) * Configuring send-community per AFI-SAFI at neighbor/peer-group (#809) * Add support for BGP large communities in send-community (#809) - Leaf send-community was changed into a leaf-list to allow the combination of different community types replacing enum value BOTH. --------- Co-authored-by: Missae W. Sasaya --- .../openconfig-bgp-common-multiprotocol.yang | 28 +++++++++++++++- .../bgp/openconfig-bgp-common-structure.yang | 19 ++++++++++- release/models/bgp/openconfig-bgp-common.yang | 31 ++++++++++++++++- release/models/bgp/openconfig-bgp-errors.yang | 12 ++++++- release/models/bgp/openconfig-bgp-global.yang | 19 ++++++++++- .../models/bgp/openconfig-bgp-neighbor.yang | 19 ++++++++++- .../models/bgp/openconfig-bgp-peer-group.yang | 19 ++++++++++- release/models/bgp/openconfig-bgp-types.yang | 33 +++++++++++++++---- release/models/bgp/openconfig-bgp.yang | 19 ++++++++++- 9 files changed, 185 insertions(+), 14 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 385e2008b..8283fdad4 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,24 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description @@ -196,6 +213,15 @@ submodule openconfig-bgp-common-multiprotocol { "This leaf indicates whether the AFI-SAFI is enabled for all neighbors or groups."; } + + leaf-list send-community-type { + type oc-bgp-types:community-type; + description + "Specify which types of community should be sent to the + neighbor or group. The default is to not send the + community attribute. This takes precedence over the neighbor + or group configuration"; + } } grouping bgp-common-mp-afi-safi-config { diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 6ab35ba12..8d3bed8a9 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,24 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 90d0b0d87..19726256e 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,24 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description @@ -260,8 +277,20 @@ submodule openconfig-bgp-common { } leaf send-community { + status deprecated; type oc-bgp-types:community-type; default "NONE"; + description + "This leaf has been deprecated and replaced by send-community-type to + support large communities. + + Specify which types of community should be sent to the + neighbor or group. The default is to not send the + community attribute"; + } + + leaf-list send-community-type { + type oc-bgp-types:community-type; description "Specify which types of community should be sent to the neighbor or group. The default is to not send the diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index cbcb53501..d76233820 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,17 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "5.3.1"; + oc-ext:openconfig-version "5.4.0"; + + revision "2023-03-31" { + description + "Add support for BGP large communities [rfc8092] in + send-community-type + + Types impacted: + - community-type"; + reference "5.4.0"; + } revision "2021-08-06" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 2157c236a..d02c63f88 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,24 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index ce798b395..f442bfc3a 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,24 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index d765e961a..cbd01ebbf 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,24 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index d3117f7d6..c9a7d01ad 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -25,7 +25,17 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "5.3.1"; + oc-ext:openconfig-version "5.4.0"; + + revision "2023-03-31" { + description + "Add support for BGP large communities [rfc8092] in + send-community + + Types impacted: + - community-type"; + reference "5.4.0"; + } revision "2021-08-06" { description @@ -713,23 +723,34 @@ module openconfig-bgp-types { typedef community-type { type enumeration { enum STANDARD { - description "Send only standard communities"; + description "Send standard communities"; } enum EXTENDED { - description "Send only extended communities"; + description "Send extended communities"; + } + enum LARGE { + description "Send large communities"; } enum BOTH { - description "Send both standard and extended communities"; + description + "Send both standard and extended communities. + This value has been deprecated because the node is now + a leaf-list."; + status deprecated; } enum NONE { - description "Do not send any community attribute"; + description + "Do not send any community attribute. + This value has been deprecated because the node is now + a leaf-list."; + status deprecated; } } description "type describing variations of community attributes: STANDARD: standard BGP community [rfc1997] EXTENDED: extended BGP community [rfc4360] - BOTH: both standard and extended community"; + LARGE: large BGP community [rfc8092]"; } diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index a0068f4cf..a2bcf25b8 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,24 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.2.0"; + oc-ext:openconfig-version "9.4.0"; + + revision "2023-04-01" { + description + "Add support for BGP large communities [rfc8092] in + send-community. + Leaf send-community was replaced by the leaf-list + send-community-type to allow the combination of different + community types"; + reference "9.4.0"; + } + + revision "2023-03-31" { + description + "Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.3.0"; + } revision "2022-12-12" { description From 6b3cb3566d019b8d0682276d4e34dc8f2aa7c49e Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Tue, 20 Jun 2023 09:21:19 -0700 Subject: [PATCH 169/372] Skip yanglint in CI (#894) * Trigger Build * Try new image * skip yanglint --- cloudbuild.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 7ba05e292..a53dcde45 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -87,9 +87,9 @@ steps: -pr-head-repo-url=$_HEAD_REPO_URL -commit-sha=$COMMIT_SHA -pr-number=$_PR_NUMBER - -skipped-validators=confd + -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 - -compat-report=yanglint + #-compat-report=yanglint -branch=$BRANCH_NAME secretEnv: ['GITHUB_ACCESS_TOKEN'] env: @@ -130,7 +130,7 @@ steps: dir: '/go/src/github.com/openconfig/pattern-regex-tests' waitFor: ['regexp clone'] id: 'regexp dep' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/regexp/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -156,7 +156,7 @@ steps: args: ['cp', 'gs://openconfig/yanglint.deb', '/workspace/yanglint.deb'] waitFor: ['validator prep'] id: 'yanglint prep2' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/yanglint/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -194,7 +194,7 @@ steps: id: 'misc-checks' ############### OC-PYANG ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/oc-pyang/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -223,7 +223,7 @@ steps: - 'GOPATH=/go' waitFor: ['go path creation'] id: 'goyang-ygot prep' -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/goyang-ygot/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -241,7 +241,7 @@ steps: id: 'goyang-ygot' ############### PYANG ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyang/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -259,7 +259,7 @@ steps: id: 'pyang' ############### PYANGBIND ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyangbind/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] @@ -277,7 +277,7 @@ steps: id: 'pyangbind' ############### COMPATIBILITY REPORT ############### -- name: 'gcr.io/$PROJECT_ID/models-ci-image' +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/compat_report.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] From 51e534ee090d8c641fa886ab13422e8e94a68774 Mon Sep 17 00:00:00 2001 From: xavier-contreras <41588868+xavier-contreras@users.noreply.github.com> Date: Tue, 20 Jun 2023 15:46:59 -0700 Subject: [PATCH 170/372] Update WiFi models field descriptions (#881) * Split the client phy-rate into separate rx/tx phy-rate leaves. This is https://github.com/openconfig/public/issues/705 * Revert "Split the client phy-rate into separate rx/tx phy-rate leaves." This reverts commit 80380e704080fb5646321d92850e6d9e3cf67261. * Specifies units to tx/rx phy-rate * Fixes some minor typos, adds full stop to descriptions, etc. * Fixed wording. * s/clients-state./clients-state --- .../models/wifi/openconfig-access-points.yang | 10 ++- .../models/wifi/openconfig-ap-interfaces.yang | 36 ++++++---- .../models/wifi/openconfig-ap-manager.yang | 12 +++- release/models/wifi/openconfig-wifi-mac.yang | 68 +++++++++++-------- release/models/wifi/openconfig-wifi-phy.yang | 30 ++++---- .../models/wifi/openconfig-wifi-types.yang | 60 ++++++++-------- 6 files changed, 127 insertions(+), 89 deletions(-) diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index eb6241194..df9629969 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,13 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.1.1"; + + revision "2023-05-26" { + description + "Fix typos in descriptions."; + reference "1.1.1"; + } revision "2023-03-22" { description @@ -122,7 +128,7 @@ module openconfig-access-points { list ap-manager { key "id"; description - "Manager(s) this AP is assinged to, referenced by id."; + "Manager(s) this AP is assigned to, referenced by id."; leaf id { type leafref { diff --git a/release/models/wifi/openconfig-ap-interfaces.yang b/release/models/wifi/openconfig-ap-interfaces.yang index e0603af2d..b54315341 100644 --- a/release/models/wifi/openconfig-ap-interfaces.yang +++ b/release/models/wifi/openconfig-ap-interfaces.yang @@ -32,7 +32,13 @@ module openconfig-ap-interfaces { "This module defines the configuration and state data for non-radio interfaces on WiFi Access Points."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.0.1"; + + revision "2023-05-26" { + description + "Add full stop to all descriptions."; + reference "1.0.1"; + } revision "2021-08-02" { description @@ -42,7 +48,7 @@ module openconfig-ap-interfaces { revision "2020-03-24" { description - "Update namespace based on new directory structure"; + "Update namespace based on new directory structure."; reference "0.1.1"; } @@ -55,7 +61,7 @@ module openconfig-ap-interfaces { grouping ap-interfaces-top { description "Top-level grouping for AP interface configuration and - operational state data"; + operational state data."; container interfaces { description @@ -73,13 +79,13 @@ module openconfig-ap-interfaces { path "../config/name"; } description - "References the name of the interface"; + "References the name of the interface."; } container config { description "Configurable items at the global, physical interface - level"; + level."; oc-ext:telemetry-on-change; uses oc-if:interface-phys-config; @@ -89,7 +95,7 @@ module openconfig-ap-interfaces { config false; description - "Operational state data at the global interface level"; + "Operational state data at the global interface level."; uses oc-if:interface-phys-config; uses oc-if:interface-common-state; @@ -103,7 +109,7 @@ module openconfig-ap-interfaces { augment "/oc-access-points:access-points/" + "oc-access-points:access-point" { description - "Adds interface configuration and state to access-points model"; + "Adds interface configuration and state to access-points model."; uses ap-interfaces-top; } @@ -113,7 +119,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface" { description "Adds ethernet interface configuration and state to - access-points model"; + access-points model."; uses oc-eth:ethernet-top; } @@ -122,7 +128,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface/oc-ap-if:ethernet" { description - "Adds 802.1X settings to individual Ethernet interfaces"; + "Adds 802.1X settings to individual Ethernet interfaces."; uses oc-1x:dot1x-top; } @@ -141,7 +147,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface" { description "Adds subinterface configuration and state to - access-points model"; + access-points model."; uses oc-if:subinterfaces-top; } @@ -151,7 +157,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface/oc-ap-if:subinterfaces/oc-ap-if:subinterface" { description "IPv4 address family configuration for - interfaces"; + interfaces."; uses oc-ip:ipv4-top; } @@ -161,7 +167,7 @@ module openconfig-ap-interfaces { "oc-ap-if:interface/oc-ap-if:subinterfaces/oc-ap-if:subinterface" { description "IPv6 address family configuration for - interfaces"; + interfaces."; uses oc-ip:ipv6-top; } @@ -170,7 +176,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface" { description - "Adds lag configuration and state to access-points model"; + "Adds lag configuration and state to access-points model."; uses oc-lag:aggregation-logical-top; } @@ -179,7 +185,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface/oc-ap-if:ethernet" { description - "Adds poe configuration and state to access-points model"; + "Adds poe configuration and state to access-points model."; uses oc-poe:poe-ethernet-top; } @@ -206,7 +212,7 @@ module openconfig-ap-interfaces { "oc-access-points:access-point/oc-ap-if:interfaces/" + "oc-ap-if:interface" { description - "Adds tunnel configuration and state to access-points model"; + "Adds tunnel configuration and state to access-points model."; uses oc-tun:tunnel-top; } diff --git a/release/models/wifi/openconfig-ap-manager.yang b/release/models/wifi/openconfig-ap-manager.yang index 317a423ef..8d08c61a7 100644 --- a/release/models/wifi/openconfig-ap-manager.yang +++ b/release/models/wifi/openconfig-ap-manager.yang @@ -26,7 +26,13 @@ module openconfig-ap-manager { "This module defines the top level configuration and state data for a system which manages Access Points."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.3.1"; + + revision "2023-05-26" { + description + "Add full stop to all descriptions."; + reference "1.3.1"; + } revision "2023-01-17" { description @@ -42,7 +48,7 @@ module openconfig-ap-manager { Leaf nodes impacted: - country-code - Fix previous incorrect revision date"; + Fix previous incorrect revision date."; reference "1.2.0"; } @@ -67,7 +73,7 @@ module openconfig-ap-manager { revision "2020-03-24" { description - "Update namespace based on new directory structure"; + "Update namespace based on new directory structure."; reference "0.1.2"; } diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index fb0699619..3bb25cfc4 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,14 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.3.0"; + oc-ext:openconfig-version "1.3.1"; + + revision "2023-05-26" { + description + "Adds clarity to various descriptions. Unit type for tx/rx phy-rate, + client frequency, etc."; + reference "1.3.1"; + } revision "2023-02-14" { description @@ -62,13 +69,13 @@ module openconfig-wifi-mac { revision "2018-12-19" { description "Frequency-specific data-rates, fix client connection-time, - fix client ipv6 addresses, remove mobility-domain."; + fix client IPv6 addresses, remove mobility-domain."; reference "0.4.0"; } revision "2018-07-16" { description - "Reorginize bssid-counters and add BSSID references. Add + "Reorganize bssid-counters and add BSSID references. Add vlan-list."; reference "0.3.0"; } @@ -82,7 +89,7 @@ module openconfig-wifi-mac { revision "2017-07-25" { description - "Initial revision"; + "Initial revision."; reference "0.1.0"; } @@ -317,13 +324,13 @@ module openconfig-wifi-mac { leaf qbss-load { type boolean; description - "Advertisement of the QBSS Load Information ELement."; + "Advertisement of the QBSS Load Information Element."; } leaf advertise-apname { type boolean; description - "Advertise the AP hostname in Beacon and Probe Resp. frames."; + "Advertise the AP hostname in Beacon and Probe Response frames."; } leaf csa { @@ -414,7 +421,7 @@ module openconfig-wifi-mac { type uint16; description "Specify the mobility domain id (MDID) where PMK-R0 - distribution will occur. Specifically, which APs will recieve + distribution will occur. Specifically, which APs will receive PMK-R0 if using 802.11r (FT)."; } @@ -565,7 +572,7 @@ module openconfig-wifi-mac { path "../state/radio-id"; } description - "References the configured id of the radio"; + "References the configured id of the radio."; } container state { @@ -616,7 +623,7 @@ module openconfig-wifi-mac { leaf rx-bss-dot11-channel-utilization { type oc-types:percentage; description - "Recieve channel utilization percent caused by reception of + "receive channel utilization percent caused by reception of any 802.11 frame within this BSS."; } @@ -635,7 +642,7 @@ module openconfig-wifi-mac { container rx-data-dist { description "The distribution of Data frame sizes in bytes of - successfully recieved AMPDU, or MPDU for non-aggregated, + successfully received AMPDU, or MPDU for non-aggregated, frames. The distribution should characterize frame sizes starting at 64 bytes or less with the bin size doubling for each successive bin to a maximum of 1MB or larger, as @@ -876,13 +883,13 @@ module openconfig-wifi-mac { leaf rx-retries-data { type oc-yang:counter64; description - "Number of received QoS Data frames with the Retry bit set"; + "Number of received QoS Data frames with the Retry bit set."; } leaf rx-total-data { type oc-yang:counter64; description - "Number of received QoS Data frames"; + "Number of received QoS Data frames."; } leaf rx-retries-subframe { @@ -895,13 +902,13 @@ module openconfig-wifi-mac { leaf rx-total-subframe { type oc-yang:counter64; description - "Total Aggregated MPDUs received"; + "Total Aggregated MPDUs received."; } leaf rx-bytes-data { type oc-yang:counter64; description - "Bytes received from QoS Data frames"; + "Bytes received from QoS Data frames."; } // Tx Counters @@ -1154,26 +1161,26 @@ module openconfig-wifi-mac { leaf tx-retries { type oc-yang:counter64; description - "Number of frames transmitted with the Retry bit set"; + "Number of frames transmitted with the Retry bit set."; } leaf tx-total-frames { type oc-yang:counter64; description - "Number of frames transmitted"; + "Number of frames transmitted."; } leaf tx-retries-data { type oc-yang:counter64; description "Number of transmitted QoS Data frames with the Retry bit - set"; + set."; } leaf tx-total-data { type oc-yang:counter64; description - "Number of transmitted QoS Data frames"; + "Number of transmitted QoS Data frames."; } leaf tx-retries-subframe { @@ -1192,7 +1199,7 @@ module openconfig-wifi-mac { leaf tx-bytes-data { type oc-yang:counter64; description - "Bytes transmitted from QoS Data frames"; + "Bytes transmitted from QoS Data frames."; } // Total Counters leaf bss-channel-utilization { @@ -1287,7 +1294,7 @@ module openconfig-wifi-mac { type string; description "Username of Client; can be outer-identity (if PEAP), - CN of certificate (if EAP-TLS) etc."; + CN of certificate (if EAP-TLS), etc."; } leaf hostname { @@ -1397,7 +1404,7 @@ module openconfig-wifi-mac { type int8; description "The RSSI of this client in dBm. Expressed as negative - number"; + number."; } leaf snr { @@ -1422,13 +1429,13 @@ module openconfig-wifi-mac { leaf rx-phy-rate { type uint16; description - "Last used PHY rate received from connected client."; + "Last used PHY rate received from connected client in Mbps."; } leaf tx-phy-rate { type uint16; description - "Last used PHY rate transmitted to connected client."; + "Last used PHY rate transmitted to connected client in Mbps."; } leaf connection-mode { @@ -1465,7 +1472,8 @@ module openconfig-wifi-mac { leaf frequency { type uint8; description - "Frequency the client is utilizing. Typically, 2.4, 5 or 6 [GHz]."; + "Frequency the client is utilizing. Typically, 2 for a client + connecting over 2.4GHz, 5 and 6 for 5/6GHz respectively."; } } } @@ -1657,30 +1665,30 @@ module openconfig-wifi-mac { grouping ssid-top { description - "Top-level grouping for ssid configuration and operational state + "Top-level grouping for SSID configuration and operational state data."; container ssids { description - "Top level container for ssids, including configuration + "Top level container for SSIDs, including configuration and state data."; list ssid { key "name"; description - "The list of named ssids on the APs."; + "The list of named SSIDs on the APs."; leaf name { type leafref { path "../config/name"; } description - "References the configured name of the ssid"; + "References the configured name of the SSID."; } container config { description - "Configurable items at the global, ssid level"; + "Configurable items at the global, SSID level"; uses ssid-common-config; } @@ -1688,7 +1696,7 @@ module openconfig-wifi-mac { container state { config false; description - "Operational state data at the ssid level"; + "Operational state data at the SSID level"; uses ssid-common-config; } diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 796c2fc6f..4f76e0060 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,11 +25,17 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.1"; + oc-ext:openconfig-version "1.2.2"; + + revision "2023-05-26" { + description + "Minor cleanup in descriptions."; + reference "1.2.2"; + } revision "2023-04-25" { description - "Update description for neighbor RSSI to specify as a negative numberr"; + "Update description for neighbor RSSI to specify as a negative number."; reference "1.2.1"; } @@ -53,7 +59,7 @@ module openconfig-wifi-phy { revision "2020-03-24" { description - "Update namespace based on new directory structure"; + "Update namespace based on new directory structure."; reference "0.4.2"; } @@ -248,7 +254,7 @@ module openconfig-wifi-phy { type uint8; description "Sets the number of associated stations after which the radio - should not perform scanning"; + should not perform scanning."; } leaf scanning-defer-traffic { @@ -331,7 +337,7 @@ module openconfig-wifi-phy { leaf rx-noise-channel-utilization { type oc-types:percentage; description - "Received channel-utilization percentage due to Noise."; + "Received channel-utilization percentage due to noise."; } leaf tx-dot11-channel-utilization { @@ -344,7 +350,7 @@ module openconfig-wifi-phy { type oc-types:percentage; description "Received channel utilization due to 802.11 frames NOT destined to a - BSS on this AP ('Overlapping BSS')"; + BSS on this AP ('Overlapping BSS')."; } } @@ -359,7 +365,7 @@ module openconfig-wifi-phy { leaf failed-fcs-frames { type oc-yang:counter64; description - "Number of frames that failed the FCS"; + "Number of frames that failed the FCS."; } // Tx Counters @@ -390,7 +396,7 @@ module openconfig-wifi-phy { leaf rssi { type int8; description - "The RSSI of this neighboring BSSID, expressed as a negative number"; + "The RSSI of this neighboring BSSID, expressed as a negative number."; } leaf channel { @@ -491,7 +497,7 @@ module openconfig-wifi-phy { key "bssid"; config false; description - "The mac address, or BSSID, of a neighbor, and + "The MAC address, or BSSID, of a neighbor, and their corresponding RSSI."; leaf bssid { @@ -499,7 +505,7 @@ module openconfig-wifi-phy { path "../state/bssid"; } config false; - description "Reference to neighbor bssid."; + description "Reference to neighbor BSSID."; } container state { @@ -546,7 +552,7 @@ module openconfig-wifi-phy { container config { description "Configurable items at the global, radio interface - level"; + level."; uses radio-common-config; } @@ -554,7 +560,7 @@ module openconfig-wifi-phy { container state { config false; description - "Operational state data at the global radio level"; + "Operational state data at the global radio level."; uses radio-common-config; uses radio-common-state; diff --git a/release/models/wifi/openconfig-wifi-types.yang b/release/models/wifi/openconfig-wifi-types.yang index 889b68548..d2d62f038 100644 --- a/release/models/wifi/openconfig-wifi-types.yang +++ b/release/models/wifi/openconfig-wifi-types.yang @@ -22,7 +22,13 @@ module openconfig-wifi-types { that are used in the openconfig-wifi modules. It can be imported by any module to make use of these types."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.1.1"; + + revision "2022-05-26" { + description + "Fix typos in descriptions."; + reference "1.1.1"; + } revision "2022-03-24" { description @@ -38,19 +44,19 @@ module openconfig-wifi-types { revision "2020-05-19" { description - "Update namespace per new directory structure"; + "Update namespace per new directory structure."; reference "0.1.2"; } revision "2020-03-24" { description - "Update namespace and fix BETTER_CHANNEL enum"; + "Update namespace and fix BETTER_CHANNEL enum."; reference "0.1.1"; } revision "2017-07-25" { description - "Initial revision"; + "Initial revision."; reference "0.1.0"; } @@ -81,13 +87,13 @@ module openconfig-wifi-types { identity L2AUTH_REQD { base CLIENT_STATE; description - "Client has Assocated, but not L2 Authenticated (e.g. 802.1X)"; + "Client has Associated, but not L2 Authenticated (e.g. 802.1X)"; } identity L3AUTH_REQD { base CLIENT_STATE; description - "Client has Assocated, but not L3 Authenticated (e.g. Captive Portal)"; + "Client has Associated, but not L3 Authenticated (e.g. Captive Portal)."; } identity DHCP_REQD { @@ -124,14 +130,14 @@ module openconfig-wifi-types { identity DHCP_FAILURE { base CLIENT_STATE; description - "Client has Associated & Authenticated but has failed to recieve an IP + "Client has Associated & Authenticated but has failed to receive an IP address, utilizing DHCP."; } identity POWERSAVE { base CLIENT_STATE; description - "AP has recieved a PS frame, indicating the client is currently in a + "AP has received a PS frame, indicating the client is currently in a powersave state."; } @@ -171,62 +177,62 @@ module openconfig-wifi-types { identity RATE_1MB { base DATA_RATE; - description "1 Mbps DSSS PHY"; + description "1 Mbps DSSS PHY."; } identity RATE_2MB { base DATA_RATE; - description "2 Mbps DSSS PHY"; + description "2 Mbps DSSS PHY."; } identity RATE_5.5MB { base DATA_RATE; - description "5.5 Mbps DSSS PHY"; + description "5.5 Mbps DSSS PHY."; } identity RATE_6MB { base DATA_RATE; - description "6 Mbps OFDM PHY"; + description "6 Mbps OFDM PHY."; } identity RATE_9MB { base DATA_RATE; - description "9 Mbps OFDM PHY"; + description "9 Mbps OFDM PHY."; } identity RATE_11MB { base DATA_RATE; - description "11 Mbps DSSS PHY"; + description "11 Mbps DSSS PHY."; } identity RATE_12MB { base DATA_RATE; - description "12 Mbps OFDM PHY"; + description "12 Mbps OFDM PHY."; } identity RATE_18MB { base DATA_RATE; - description "18 Mbps OFDM PHY"; + description "18 Mbps OFDM PHY."; } identity RATE_24MB { base DATA_RATE; - description "24 Mbps OFDM PHY"; + description "24 Mbps OFDM PHY."; } identity RATE_36MB { base DATA_RATE; - description "36 Mbps OFDM PHY"; + description "36 Mbps OFDM PHY."; } identity RATE_48MB { base DATA_RATE; - description "48 Mbps OFDM PHY"; + description "48 Mbps OFDM PHY."; } identity RATE_54MB { base DATA_RATE; - description "54 Mbps OFDM PHY"; + description "54 Mbps OFDM PHY."; } identity OPERATING_FREQUENCY { @@ -269,8 +275,8 @@ module openconfig-wifi-types { identity CLIENT_CAPABILITIES { description - "Client capabilities, as reported by Assoc. Req. or - Probe Req. frames."; + "Client capabilities, as reported by Association Request or + Probe Request frames."; } identity MU_BEAMFORMER { @@ -299,8 +305,8 @@ module openconfig-wifi-types { base CLIENT_CAPABILITIES; description "Whether this STA supports 802.11v BSS Transition. Note, must - be enabled on BSS for this to be accurate; unless Probe Req. - are observied in addition to Assoc. Req."; + be enabled on BSS for this to be accurate; unless Probe Request + are observed in addition to Association Request."; } identity MFP { @@ -316,20 +322,20 @@ module openconfig-wifi-types { identity DFS { base CHANGE_REASON_TYPE; description - "DFS hit occured."; + "DFS hit occurred."; } identity NOISE { base CHANGE_REASON_TYPE; description - "Excessive amounts of non-802.11 Noise occured."; + "Excessive amounts of non-802.11 Noise occurred."; } identity ERRORS { base CHANGE_REASON_TYPE; description "Excessive reception of frames which - failed the FCS occured."; + failed the FCS occurred."; } identity BETTER_CHANNEL { From ed57b04e2167298806b0ae70315844a4a45f2a32 Mon Sep 17 00:00:00 2001 From: m26singhvi Date: Tue, 27 Jun 2023 06:03:00 +0530 Subject: [PATCH 171/372] Update oc-macsec model to support rx-late-pkts in macsec-interface-counters (#887) Update oc-macsec model to support rx-late-pkts in macsec-interface-counters Co-authored-by: dplore --- release/models/macsec/openconfig-macsec.yang | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/release/models/macsec/openconfig-macsec.yang b/release/models/macsec/openconfig-macsec.yang index 27f6f2d2d..5554f695f 100644 --- a/release/models/macsec/openconfig-macsec.yang +++ b/release/models/macsec/openconfig-macsec.yang @@ -18,11 +18,17 @@ module openconfig-macsec { "This module defines configuration and state data for MACsec IEEE Std 802.1AE-2018."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-06-08" { + description + "Support rx-late-pkts leaf."; + reference "1.1.0"; + } + revision "2022-04-28" { description "Use global key chain model."; @@ -419,6 +425,15 @@ module openconfig-macsec { This counter will increment if MACsec is enabled on interface and incoming packet does not have SCI field in MACsec tag."; } + + leaf rx-late-pkts { + type oc-yang:counter64; + description + "MACsec interface level Receive Late Packets counter. + This counter will increment if MACsec is enabled on the interface and + packet number of incoming packet is less than the lowest acceptable + packet number and replay protection is enabled."; + } } grouping macsec-scsa-interface-top { From 0cae2cfef05512b9f2eb6b4bc67a18d63c569476 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 27 Jun 2023 23:26:44 -0700 Subject: [PATCH 172/372] Clarify transport/state/remote-port vs. config/neighbor-port (#898) * clarify transport/state/remote-port vs. config/neighbor-port --- .../openconfig-bgp-common-multiprotocol.yang | 8 +++++++- .../bgp/openconfig-bgp-common-structure.yang | 8 +++++++- release/models/bgp/openconfig-bgp-common.yang | 8 +++++++- release/models/bgp/openconfig-bgp-global.yang | 8 +++++++- .../models/bgp/openconfig-bgp-neighbor.yang | 20 ++++++++++++++----- .../models/bgp/openconfig-bgp-peer-group.yang | 8 +++++++- release/models/bgp/openconfig-bgp.yang | 8 +++++++- 7 files changed, 57 insertions(+), 11 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 8283fdad4..60f4d67d6 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 8d3bed8a9..a73bc9d46 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 19726256e..7cad2ac6f 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index d02c63f88..f3ceff357 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -26,7 +26,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index f442bfc3a..1b76c81a6 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp neighbor-port, remote-port and local-port descriptions"; + reference "9.4.1"; + } revision "2023-04-01" { description @@ -197,7 +203,8 @@ submodule openconfig-bgp-neighbor { type oc-inet:port-number; default 179; description - "Port number of the BGP peer"; + "Destination TCP port number of the BGP peer when initiating a + session from the local router"; } leaf enabled { @@ -460,7 +467,7 @@ submodule openconfig-bgp-neighbor { leaf local-port { type oc-inet:port-number; description - "Local TCP port being used for the TCP session supporting + "Local, source TCP port being used for the TCP session supporting the BGP session"; } @@ -474,8 +481,11 @@ submodule openconfig-bgp-neighbor { leaf remote-port { type oc-inet:port-number; description - "Remote port being used by the peer for the TCP session - supporting the BGP session"; + "The source TCP port being used by the peer for the TCP session + supporting the BGP session. This is expected to be the same value + as the configured neighbor-port if the local device initiated the + connection or a different TCP port if the peer initiated the TCP + session."; } } diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index cbd01ebbf..438ee5005 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index a2bcf25b8..b9e9b2f07 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,13 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.4.0"; + oc-ext:openconfig-version "9.4.1"; + + revision "2023-06-27" { + description + "Clarify bgp remote-port description"; + reference "9.4.1"; + } revision "2023-04-01" { description From 0c299887df1286731514951595e82d8c4638944e Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 28 Jun 2023 08:15:58 -0700 Subject: [PATCH 173/372] remove deviations from wifi models (#897) * remove deviations from wifi models * remove deviations from wifi * update description and add type --- .../platform/openconfig-platform-types.yang | 15 ++++++- .../models/wifi/openconfig-access-points.yang | 20 +++++----- .../models/wifi/openconfig-ap-interfaces.yang | 39 ++++--------------- 3 files changed, 31 insertions(+), 43 deletions(-) diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index 970a9cebb..d28881f9e 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.5.0"; + oc-ext:openconfig-version "1.6.0"; + + revision "2023-06-27" { + description + "Add WIFI_ACCESS_POINT"; + reference "1.6.0"; + } revision "2022-07-28" { description @@ -345,6 +351,13 @@ module openconfig-platform-types { chip, etc.)"; } + identity WIFI_ACCESS_POINT { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "A device that attaches to a an Ethernet network and creates a wireless + local area network"; + } + identity OPERATING_SYSTEM { base OPENCONFIG_SOFTWARE_COMPONENT; description diff --git a/release/models/wifi/openconfig-access-points.yang b/release/models/wifi/openconfig-access-points.yang index df9629969..d773a59a5 100644 --- a/release/models/wifi/openconfig-access-points.yang +++ b/release/models/wifi/openconfig-access-points.yang @@ -27,7 +27,13 @@ module openconfig-access-points { "This module defines the top level WiFi Configurations for a list of Access Points."; - oc-ext:openconfig-version "1.1.1"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-06-26" { + description + "Update description for hostname"; + reference "1.2.0"; + } revision "2023-05-26" { description @@ -168,7 +174,9 @@ module openconfig-access-points { "ap-manager:config/ap-manager:hostname"; } description - "Access Point FQDN."; + "Access Point FQDN. This leaf is only valid when the type of the + component is WIFI_ACCESS_POINT, and should be used instead of + /oc-sys:system/oc-sys:state/oc-sys:hostname."; } } @@ -219,12 +227,4 @@ module openconfig-access-points { } uses access-points-top; - // hostname is set using openconfig-wifi-aps model. - deviation /oc-sys:system/oc-sys:config/oc-sys:hostname { - deviate not-supported; - } - - deviation /oc-sys:system/oc-sys:state/oc-sys:hostname { - deviate not-supported; - } } diff --git a/release/models/wifi/openconfig-ap-interfaces.yang b/release/models/wifi/openconfig-ap-interfaces.yang index b54315341..913520165 100644 --- a/release/models/wifi/openconfig-ap-interfaces.yang +++ b/release/models/wifi/openconfig-ap-interfaces.yang @@ -32,7 +32,13 @@ module openconfig-ap-interfaces { "This module defines the configuration and state data for non-radio interfaces on WiFi Access Points."; - oc-ext:openconfig-version "1.0.1"; + oc-ext:openconfig-version "1.2.0"; + + revision "2023-06-26" { + description + "Remove deviation for unnumbered interfaces"; + reference "1.2.0"; + } revision "2023-05-26" { description @@ -216,35 +222,4 @@ module openconfig-ap-interfaces { uses oc-tun:tunnel-top; } - // Deviation statements - // Unnumbered interfaces not supported on Access Points. - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:subinterfaces/oc-ap-if:subinterface/oc-ap-if:ipv4/" + - "oc-ap-if:unnumbered" { - deviate not-supported; - } - - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:subinterfaces/oc-ap-if:subinterface/oc-ap-if:ipv6/" + - "oc-ap-if:unnumbered" { - deviate not-supported; - } - - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:tunnel/oc-ap-if:ipv4/oc-ap-if:unnumbered" { - deviate not-supported; - } - - deviation "/oc-access-points:access-points/" + - "oc-access-points:access-point/" + - "oc-ap-if:interfaces/oc-ap-if:interface/" + - "oc-ap-if:tunnel/oc-ap-if:ipv6/oc-ap-if:unnumbered" { - deviate not-supported; - } } From 6e1174af25db09af1f58a42ff51c01be864a6e88 Mon Sep 17 00:00:00 2001 From: marcushines <80116818+marcushines@users.noreply.github.com> Date: Thu, 29 Jun 2023 12:45:18 -0500 Subject: [PATCH 174/372] Add bootz status model and link it to the openconfig system tree (#893) * Add bootz status model and link it to the openconfig system tree * Address Arista's comments --- release/models/system/.spec.yml | 24 ++-- .../system/openconfig-system-bootz.yang | 115 ++++++++++++++++++ release/models/system/openconfig-system.yang | 26 ++-- 3 files changed, 144 insertions(+), 21 deletions(-) create mode 100644 release/models/system/openconfig-system-bootz.yang diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index f1f5b62a1..9cd6c6222 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -1,20 +1,21 @@ - name: openconfig-system docs: - - yang/system/openconfig-aaa-types.yang - - yang/system/openconfig-alarm-types.yang - - yang/system/openconfig-system.yang - - yang/system/openconfig-system-terminal.yang - - yang/system/openconfig-system-logging.yang - - yang/system/openconfig-system-utilization.yang - - yang/system/openconfig-procmon.yang + - yang/openflow/openconfig-openflow.yang - yang/system/openconfig-aaa.yang - - yang/system/openconfig-aaa-tacacs.yang - yang/system/openconfig-aaa-radius.yang + - yang/system/openconfig-aaa-tacacs.yang + - yang/system/openconfig-aaa-types.yang - yang/system/openconfig-alarms.yang + - yang/system/openconfig-alarm-types.yang - yang/system/openconfig-license.yang - - yang/openflow/openconfig-openflow.yang - - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-procmon.yang + - yang/system/openconfig-system.yang + - yang/system/openconfig-system-bootz.yang - yang/system/openconfig-system-controlplane.yang + - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-logging.yang + - yang/system/openconfig-system-terminal.yang + - yang/system/openconfig-system-utilization.yang build: - yang/system/openconfig-system.yang - yang/system/openconfig-system-utilization.yang @@ -22,8 +23,9 @@ - name: openconfig-system-ext build: - yang/system/openconfig-system.yang - - yang/system/openconfig-system-grpc.yang + - yang/system/openconfig-system-bootz.yang - yang/system/openconfig-system-controlplane.yang + - yang/system/openconfig-system-grpc.yang run-ci: true - name: openconfig-messages docs: diff --git a/release/models/system/openconfig-system-bootz.yang b/release/models/system/openconfig-system-bootz.yang new file mode 100644 index 000000000..58bba83c1 --- /dev/null +++ b/release/models/system/openconfig-system-bootz.yang @@ -0,0 +1,115 @@ +module openconfig-system-bootz { + yang-version "1"; + + namespace "http://openconfig.net/yang/system-bootz"; + prefix "oc-sys-bootz"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { prefix oc-sys; } + import openconfig-types { prefix oc-types; } + import openconfig-yang-types { prefix oc-yang; } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state relating to bootz + service running on a network device."; + + + oc-ext:openconfig-version "1.0.0"; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + revision "2023-06-16" { + description + "Creation of bootz state paths needed for the service."; + reference "1.0.0"; + } + + grouping bootz-service-structural { + description + "Structural grouping for bootz service that can be enabled on + the system."; + + container bootz { + description + "Bootz protocol container for management of bootz protocol state."; + + container state { + config false; + description + "Operational state relating to the bootz service."; + uses bootz-state; + } + } + } + + grouping bootz-state { + description + "State parameters required to monitor bootz service."; + + leaf checksum { + type string; + default ""; + description + "The current checksum of the bootz protocol buffer. + + This value should refect the current sha-512 of the bootz + protocol buffer message BootstrapDataSigned. The protocol + buffer serialization must be done by tag value for each field + in the bootz protocol buffer. This will produce a + determintistic marshalled value which can be + checksummed."; + } + + leaf error-count { + type oc-yang:counter64; + description + "Total count of all bootz errors."; + } + + leaf status { + type enumeration { + enum BOOTZ_UNSPECIFIED; + enum BOOTZ_SENT; + enum BOOTZ_RECEIVED; + enum BOOTZ_CONFIGURATION_APPLIED; + enum BOOTZ_OK; + enum BOOTZ_OV_INVALID; + enum BOOTZ_OS_UPGRADE_IN_PROGRESS; + enum BOOTZ_OS_UPGRADE_COMPLETE; + enum BOOTZ_OS_INVALID_IMAGE; + enum BOOTZ_CONFIGURATION_INVALID; + } + description + "The status of the bootz service. + + The general sequence for the flow would be: + BOOTZ_UNSPECIFIED <- system initial state + BOOTZ_SENT <- bootz request sent + BOOTZ_RECEIVED <- bootz response received + BOOTZ_OS_UPGRADE_IN_PROGRESS <- (if needed) + BOOTZ_OS_UPGRADE_COMPLETE <- (if needed) + BOOTZ_CONFIGURATION_APPLIED <- bootz configuration applied + BOOTZ_OK <- bootz process successful + + If any error is encounter an error ENUM will be returned."; + } + + leaf last-boot-attempt { + type oc-types:timeticks64; + description + "The timestamp of the last bootz attempt."; + } + } + + augment "/oc-sys:system" { + description + "Add bootz service configuration to the openconfig-system model."; + + uses bootz-service-structural; + } +} diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 0ba4dc125..aa9589c02 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,7 +47,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.17.0"; + oc-ext:openconfig-version "0.17.1"; + + revision "2023-06-16" { + description + "Reordered imports to be alphabetical."; + reference "0.17.1"; + } revision "2022-12-20" { description @@ -1255,20 +1261,20 @@ module openconfig-system { } uses mount-points-top; - uses system-clock-top; - uses system-dns-top; - uses system-ntp-top; - uses oc-sys-term:system-ssh-server-top; - uses oc-sys-term:system-telnet-server-top; - uses oc-log:logging-top; uses oc-aaa:aaa-top; - uses system-memory-top; - uses system-cpu-top; - uses oc-proc:procmon-processes-top; uses oc-alarms:alarms-top; + uses oc-log:logging-top; + uses oc-proc:procmon-processes-top; uses oc-messages:messages-top; uses oc-license:license-top; + uses oc-sys-term:system-ssh-server-top; + uses oc-sys-term:system-telnet-server-top; + uses system-clock-top; + uses system-cpu-top; + uses system-dns-top; uses system-macaddr-top; + uses system-memory-top; + uses system-ntp-top; } } From e2799c0a9f2d9c977e404d8703971d766f64a23a Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 5 Jul 2023 12:59:44 -0700 Subject: [PATCH 175/372] Fix typo in ospf lsdb experimental-te leaf description (#904) * Fix typo in ospf lsdb experimental-te leaf description --- .../models/ospf/openconfig-ospfv2-area-interface.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-area.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-common.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-global.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-lsdb.yang | 10 ++++++++-- release/models/ospf/openconfig-ospfv2.yang | 8 +++++++- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index f34976d97..52d560bad 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index fe60d78d4..1cc2a9520 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index fbd7c5886..d5c2fd945 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 37a50b35a..832bf1103 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 18f6836c8..5a39769fb 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description @@ -1786,7 +1792,7 @@ submodule openconfig-ospfv2-lsdb { type boolean; default false; description - "When this leaf is set to ture, the advertising system supports the + "When this leaf is set to true, the advertising system supports the experimental extensions to OSPF for TE described in RFC4973"; reference "RFC4973"; } diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index ebddd64a5..f75a207bd 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.4.1"; + oc-ext:openconfig-version "0.4.2"; + + revision "2023-07-05" { + description + "Fix typo in experimental-te leaf description."; + reference "0.4.2"; + } revision "2023-03-06" { description From 1dcc2a57021b56ddac07d5050db49be30d904178 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 09:37:55 -0700 Subject: [PATCH 176/372] Fix CI push and increase timeout --- cloudbuild.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index a53dcde45..b3eb0f930 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -80,7 +80,7 @@ steps: entrypoint: 'bash' args: - -c - - >- # CI Configuration + - >- # CI Configuration #-compat-report=yanglint /go/bin/cmd_gen -modelRoot=$_MODEL_ROOT -repo-slug=$_REPO_SLUG @@ -89,7 +89,6 @@ steps: -pr-number=$_PR_NUMBER -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 - #-compat-report=yanglint -branch=$BRANCH_NAME secretEnv: ['GITHUB_ACCESS_TOKEN'] env: @@ -293,7 +292,7 @@ steps: path: /go id: 'compat-report' -timeout: 600s +timeout: 900s options: machineType: 'E2_HIGHCPU_32' From 9c501dd53bb0303f6c90c9002c92fde3217a0042 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 09:40:35 -0700 Subject: [PATCH 177/372] remove yanglint comment --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index b3eb0f930..9c4c24184 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -80,7 +80,7 @@ steps: entrypoint: 'bash' args: - -c - - >- # CI Configuration #-compat-report=yanglint + - >- # CI Configuration /go/bin/cmd_gen -modelRoot=$_MODEL_ROOT -repo-slug=$_REPO_SLUG From d2e6fb1d3903622abcc1bc89fb843fd53e1da899 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 17:20:25 -0700 Subject: [PATCH 178/372] Test with new pyangbind plugin dir --- cloudbuild.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 9c4c24184..ac2276f7b 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,7 +52,8 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v9*' | sort -V | tail -1) + #branch=$(git tag -l 'v9*' | sort -V | tail -1) + branch=local-pyangbind-plugin git checkout $branch volumes: - name: 'ssh' From 475954ed988198ac49881f88bfb35092acfb298c Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 17:24:13 -0700 Subject: [PATCH 179/372] Trigger Build From bca3526165bfcb1bb2eeb265306c4bccb9b63d25 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 17:33:43 -0700 Subject: [PATCH 180/372] revert timeout increase --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index ac2276f7b..c1483ab2b 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -293,7 +293,7 @@ steps: path: /go id: 'compat-report' -timeout: 900s +timeout: 600s options: machineType: 'E2_HIGHCPU_32' From 7003096524fa34ccc03a173f0b8aaf7c0cff0476 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 17:47:49 -0700 Subject: [PATCH 181/372] Trigger Build From 37ad0caf09886fd86973eaaa68d569ae9b957ae4 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 18:03:08 -0700 Subject: [PATCH 182/372] Trigger Build From ff380a57c9514c78ba799c5fcb6b943ebe30583d Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 18:18:08 -0700 Subject: [PATCH 183/372] Trigger Build From cb97bd1ed74868598f3aaf3d5b00027a6dae978d Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 18:34:07 -0700 Subject: [PATCH 184/372] Move pyangbind to compat report due to failing BFD check --- cloudbuild.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index c1483ab2b..31bb8dd50 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -90,6 +90,7 @@ steps: -pr-number=$_PR_NUMBER -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 + -compat-report=pyangbind -branch=$BRANCH_NAME secretEnv: ['GITHUB_ACCESS_TOKEN'] env: From 213371277ca19202399bbf3448ac1f06cbd147ce Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 18:52:30 -0700 Subject: [PATCH 185/372] Update to v10 for CI --- cloudbuild.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 31bb8dd50..e02c34e7f 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,8 +52,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - #branch=$(git tag -l 'v9*' | sort -V | tail -1) - branch=local-pyangbind-plugin + branch=$(git tag -l 'v10.*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' From 662e0713f0ba478dc30915d2328dc2d54ef42013 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 19:00:58 -0700 Subject: [PATCH 186/372] Test new pyangbind version --- cloudbuild.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index e02c34e7f..e622fe369 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,7 +52,8 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v10.*' | sort -V | tail -1) + #branch=$(git tag -l 'v10.*' | sort -V | tail -1) + branch=pyangbind-version git checkout $branch volumes: - name: 'ssh' @@ -89,8 +90,8 @@ steps: -pr-number=$_PR_NUMBER -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 - -compat-report=pyangbind -branch=$BRANCH_NAME + #-compat-report=pyangbind secretEnv: ['GITHUB_ACCESS_TOKEN'] env: - 'GOPATH=/go' From 46ef618af044cc6d340c5854598db6aaa064c9d9 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 19:02:25 -0700 Subject: [PATCH 187/372] trigger CI --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index e622fe369..561000730 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -91,7 +91,7 @@ steps: -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 -branch=$BRANCH_NAME - #-compat-report=pyangbind + -compat-report=pyangbind secretEnv: ['GITHUB_ACCESS_TOKEN'] env: - 'GOPATH=/go' From 57f0b652a242b1a3ba65a984a9891491efa3be66 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 13 Jul 2023 19:13:21 -0700 Subject: [PATCH 188/372] Trigger Build From 37557d26460d13c7deed03f5448e14497affd544 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 14 Jul 2023 16:50:13 -0700 Subject: [PATCH 189/372] Add IPv6 RA config mode (#900) * add v6 ra config mode, deprecate suppress * use container level enable, and mode enum --- .../models/interfaces/openconfig-if-ip.yang | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index a0b74fee9..498a90bec 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,14 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.3.0"; + oc-ext:openconfig-version "3.4.0"; + + revision "2023-06-30" { + description + "Deprecate IPv6 router advertisment config suppress leaf and add config + mode leaf."; + reference "3.4.0"; + } revision "2023-04-12" { description @@ -54,7 +61,7 @@ module openconfig-if-ip { revision "2023-02-06" { description - "Add ipv6 link-local configuration."; + "Add IPv6 link-local configuration."; reference "3.2.0"; } @@ -939,6 +946,15 @@ module openconfig-if-ip { description "Configuration parameters for IPv6 router advertisements."; + leaf enable { + type boolean; + default true; + description + "If set to false, all IPv6 router advertisement functions are + disabled. The local system will not transmit router advertisement + messages and will not respond to router solicitation messages."; + } + leaf interval { type uint32; units seconds; @@ -957,6 +973,7 @@ module openconfig-if-ip { } leaf suppress { + status deprecated; type boolean; default false; description @@ -964,6 +981,27 @@ module openconfig-if-ip { messages are not transmitted on this interface."; } + leaf mode { + type enumeration { + enum ALL { + description + "The system will transmit unsolicited router advertisement + messages and respond to router solicitation requests."; + } + enum DISABLE_UNSOLICITED_RA { + description + "Unsolicted router advertisement messages are not transmitted on + this interface. Responses to router solicitation messages will + be transmitted."; + } + } + default "ALL"; + description + "Mode controls which set of behaviors the local system should perform + to support IPv6 router advertisements."; + reference "RFC4861: Neighbor Discovery for IP version 6 (IPv6)"; + } + leaf managed { type boolean; default false; From bf264a407f5bbcf8ac753d512f21bebacedf7f12 Mon Sep 17 00:00:00 2001 From: wenovus Date: Mon, 17 Jul 2023 15:26:10 -0700 Subject: [PATCH 190/372] Ready for review --- cloudbuild.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 561000730..88148e530 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,8 +52,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - #branch=$(git tag -l 'v10.*' | sort -V | tail -1) - branch=pyangbind-version + branch=$(git tag -l 'v10.*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' From 94aeb472fcc2f93deb6d6080996021ae3faa88aa Mon Sep 17 00:00:00 2001 From: jnelson-sj <116230171+jnelson-sj@users.noreply.github.com> Date: Mon, 24 Jul 2023 16:27:49 -0700 Subject: [PATCH 191/372] Bias voltage thresholds (#907) * Initial commit for bias and voltage thresholds * Specify that the thresholds are compared against the instant parameter of the measured value --- .../openconfig-platform-transceiver.yang | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index 388953b49..e0af67e6e 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.11.0"; + oc-ext:openconfig-version "0.12.0"; + + revision "2023-06-27" { + description + "Add tx bias and voltage thresholds"; + reference "0.12.0"; + } revision "2023-05-03" { description @@ -439,7 +445,9 @@ module openconfig-platform-transceiver { container thresholds { description - "Enclosing container for transceiver alarm thresholds."; + "Enclosing container for transceiver alarm thresholds. + Each threshold is compared to the instant value of the + measured parameter corresponding to the threshold"; list threshold { key "severity"; @@ -803,6 +811,38 @@ module openconfig-platform-transceiver { description "The lower power threshold for the laser input power."; } + leaf laser-bias-current-upper{ + description + "The upper threshold for the laser bias current."; + type decimal64 { + fraction-digits 2; + } + units mA; + } + leaf laser-bias-current-lower{ + description + "The lower threshold for the laser bias current."; + type decimal64 { + fraction-digits 2; + } + units mA; + } + leaf supply-voltage-upper{ + description + "The upper threshold for the transceiver supply voltage."; + type decimal64 { + fraction-digits 2; + } + units volts; + } + leaf supply-voltage-lower{ + description + "The lower threshold for the transceiver supply voltage."; + type decimal64 { + fraction-digits 2; + } + units volts; + } } grouping port-transceiver-top { From 5b178c57258869ed4e02a24f0902376f48195ef2 Mon Sep 17 00:00:00 2001 From: Leon Wang Date: Tue, 25 Jul 2023 09:23:00 -0700 Subject: [PATCH 192/372] Add support for SFP-DD and DSFP form factor identities (#585) SFP-DD and DSFP transceiver form factor identities are missing from OpenConfig. --- .../openconfig-transport-types.yang | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index 494c67216..4eecd6b53 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.18.1"; + oc-ext:openconfig-version "0.19.0"; + + revision "2023-07-24" { + description + "Add SFP_DD and DSFP form factor identities."; + reference "0.19.0"; + } revision "2023-02-08" { description @@ -867,6 +873,22 @@ module openconfig-transport-types { 50 Gb/s signal"; } + identity SFP_DD { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "SFP-DD electrical interfaces will employ 2 lanes that operate up + 25 Gbps NRZ modulation or 56 Gbps PAM4 modulation, providing + solutions up to 50 Gbps or 112 Gbps PAM4 aggregate"; + reference "http://sfp-dd.com"; + } + + identity DSFP { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "A transceiver implementing the DSFP Transceiver specification"; + reference "https://dsfpmsa.org/"; + } + identity XFP { base TRANSCEIVER_FORM_FACTOR_TYPE; description From e5ce68cb12ed6fe7e06bbd768721965bf3ae974e Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 25 Jul 2023 09:27:36 -0700 Subject: [PATCH 193/372] Add multicast counters to ip interface, remove physical counters from subinterface (#905) * add multicast to ip if, remove physical counters from subinterface * add in deprecated leaves to subif for backwards compat * use common grouping for if counters --- .../models/interfaces/openconfig-if-ip.yang | 111 +--- .../interfaces/openconfig-interfaces.yang | 622 ++++++++++-------- 2 files changed, 364 insertions(+), 369 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 498a90bec..90510e9e7 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,14 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-07-14" { + description + "Move counters which apply to both interfaces and subinterfaces to + a common grouping. Deprecate physical counters from subinterface"; + reference "3.5.0"; + } revision "2023-06-30" { description @@ -230,42 +237,6 @@ module openconfig-if-ip { "Packet and byte counters for IP transmission and reception for the address family."; - - leaf in-pkts { - type oc-yang:counter64; - description - "The total number of IP packets received for the specified - address family, including those received in error"; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - - leaf in-octets { - type oc-yang:counter64; - description - "The total number of octets received in input IP packets - for the specified address family, including those received - in error."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - - leaf in-error-pkts { - // TODO: this counter combines several error conditions -- - // could consider breaking them out to separate leaf nodes - type oc-yang:counter64; - description - "Number of IP packets discarded due to errors for the - specified address family, including errors in the IP - header, no route found to the IP destination, invalid - address, unknown protocol, etc."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - leaf in-forwarded-pkts { type oc-yang:counter64; description @@ -291,57 +262,6 @@ module openconfig-if-ip { Internet Protocol (IP)"; } - leaf in-discarded-pkts { - type oc-yang:counter64; - description - "The number of input IP packets for the - specified address family, for which no problems were - encountered to prevent their continued processing, but - were discarded (e.g., for lack of buffer space)."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - - leaf out-pkts { - type oc-yang:counter64; - description - "The total number of IP packets for the - specified address family that the device supplied - to the lower layers for transmission. This includes - packets generated locally and those forwarded by the - device."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - - leaf out-octets { - type oc-yang:counter64; - description - "The total number of octets in IP packets for the - specified address family that the device - supplied to the lower layers for transmission. This - includes packets generated locally and those forwarded by - the device."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - - leaf out-error-pkts { - // TODO: this counter combines several error conditions -- - // could consider breaking them out to separate leaf nodes - type oc-yang:counter64; - description - "Number of IP packets for the specified address family - locally generated and discarded due to errors, including - no route found to the IP destination."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } - leaf out-forwarded-pkts { type oc-yang:counter64; description @@ -363,25 +283,10 @@ module openconfig-if-ip { "RFC 4293 - Management Information Base for the Internet Protocol (IP)"; } - - leaf out-discarded-pkts { - type oc-yang:counter64; - description - "The number of output IP packets for the - specified address family for which no problem was - encountered to prevent their transmission to their - destination, but were discarded (e.g., for lack of - buffer space)."; - reference - "RFC 4293 - Management Information Base for the - Internet Protocol (IP)"; - } } - } - grouping ipv4-global-config { description "Configuration data for IPv4 interfaces across diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index 7d349a07c..9517a92ab 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,9 +51,16 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.0.2"; + oc-ext:openconfig-version "3.5.0"; -revision "2023-02-06" { + revision "2023-07-14" { + description + "Move counters which apply to both interfaces and subinterfaces to + a common grouping. Deprecate physical counters from subinterface"; + reference "3.5.0"; + } + + revision "2023-02-06" { description "Add further specification to interface-ref type to clarify that the interface and subinterface leaves @@ -637,298 +644,365 @@ revision "2023-02-06" { } } - - grouping interface-counters-state { +grouping interface-common-counters-state { description - "Operational state representing interface counters - and statistics."; + "Operational state representing interface counters and statistics + applicable to (physical) interfaces and (logical) subinterfaces."; - //TODO: we may need to break this list of counters into those - //that would appear for physical vs. subinterface or logical - //interfaces. For now, just replicating the full stats - //grouping to both interface and subinterface. + leaf in-octets { + type oc-yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. - oc-ext:operational; + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - container counters { + leaf in-pkts { + type oc-yang:counter64; description - "A collection of interface-related statistics objects."; + "The total number of packets received on the interface, + including all unicast, multicast, broadcast and bad packets + etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information Base. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-octets { - type oc-yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } + leaf in-unicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-pkts { - type oc-yang:counter64; - description - "The total number of packets received on the interface, - including all unicast, multicast, broadcast and bad packets - etc."; - reference - "RFC 2819: Remote Network Monitoring Management Information - Base"; - } + leaf in-broadcast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInBroadcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-unicast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } + leaf in-multicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInMulticastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-broadcast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } + leaf in-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-multicast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } + leaf in-discards { + type oc-yang:counter64; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. - leaf in-discards { - type oc-yang:counter64; - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } + leaf out-octets { + type oc-yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. - leaf in-errors { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-unknown-protos { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } + leaf out-pkts { + type oc-yang:counter64; + description + "The total number of packets transmitted out of the + interface, including all unicast, multicast, broadcast, + and bad packets etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information Base. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-fcs-errors { - type oc-yang:counter64; - description - "Number of received packets which had errors in the - frame check sequence (FCS), i.e., framing errors. + leaf out-unicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - Discontinuities in the value of this counter can occur - when the device is re-initialization as indicated by the - value of 'last-clear'."; - } + leaf out-broadcast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutBroadcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-octets { - type oc-yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } + leaf out-multicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutMulticastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-pkts { - type oc-yang:counter64; - description - "The total number of packets transmitted out of the - interface, including all unicast, multicast, broadcast, - and bad packets etc."; - reference - "RFC 2819: Remote Network Monitoring Management Information - Base"; - } + leaf out-discards { + type oc-yang:counter64; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-unicast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } + leaf out-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-broadcast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } + leaf last-clear { + type oc-types:timeticks64; + description + "Timestamp of the last time the interface counters were + cleared. + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + oc-ext:telemetry-on-change; + } + } - leaf out-multicast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } + grouping interface-counters-state { + description + "Operational state representing interface counters + and statistics."; - leaf out-discards { - type oc-yang:counter64; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } + oc-ext:operational; - leaf out-errors { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } + leaf in-unknown-protos { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } - leaf carrier-transitions { - type oc-yang:counter64; - description - "Number of times the interface state has transitioned - between up and down since the time the device restarted - or the last-clear time, whichever is most recent."; - oc-ext:telemetry-on-change; - } + leaf in-fcs-errors { + type oc-yang:counter64; + description + "Number of received packets which had errors in the + frame check sequence (FCS), i.e., framing errors. - leaf last-clear { - type oc-types:timeticks64; - description - "Timestamp of the last time the interface counters were - cleared. + Discontinuities in the value of this counter can occur + when the device is re-initialization as indicated by the + value of 'last-clear'."; + } - The value is the timestamp in nanoseconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - oc-ext:telemetry-on-change; - } + leaf carrier-transitions { + type oc-yang:counter64; + description + "Number of times the interface state has transitioned + between up and down since the time the device restarted + or the last-clear time, whichever is most recent."; + oc-ext:telemetry-on-change; + } + } + + grouping subinterfaces-counters-state { + description + "Operational state representing counters unique to subinterfaces"; + + oc-ext:operational; + leaf in-unknown-protos { + type oc-yang:counter64; + status deprecated; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; } + + leaf in-fcs-errors { + type oc-yang:counter64; + status deprecated; + description + "Number of received packets which had errors in the + frame check sequence (FCS), i.e., framing errors. + + Discontinuities in the value of this counter can occur + when the device is re-initialization as indicated by the + value of 'last-clear'."; + } + + leaf carrier-transitions { + type oc-yang:counter64; + status deprecated; + description + "Number of times the interface state has transitioned + between up and down since the time the device restarted + or the last-clear time, whichever is most recent."; + oc-ext:telemetry-on-change; + } + } // data definition statements @@ -1020,7 +1094,15 @@ revision "2023-02-06" { } uses interface-common-state; - uses interface-counters-state; + + container counters { + description + "A collection of interface specific statistics entitites which are + not common to subinterfaces."; + + uses interface-common-counters-state; + uses subinterfaces-counters-state; + } } grouping subinterfaces-top { @@ -1119,7 +1201,15 @@ revision "2023-02-06" { uses interface-phys-config; uses interface-common-state; - uses interface-counters-state; + + container counters { + description + "A collection of interface specific statistics entitites which are + not common to subinterfaces."; + + uses interface-common-counters-state; + uses interface-counters-state; + } } uses interface-phys-holdtime-top; From e84d592563e15abef1b4b80760dd7ef0ebbcccad Mon Sep 17 00:00:00 2001 From: vivek-ilangovan <96305323+vivek-ilangovan@users.noreply.github.com> Date: Thu, 27 Jul 2023 02:29:11 +0530 Subject: [PATCH 194/372] Flex-algo model for IGP (#550) * Add flex-algo model * Associate the flex-algo binding to segment-routing * Add flex-algo-prefix-sids container to sr-igp-interface-top. This will associate flex-algo sid to a prefix * Added new global and interface specific attributes for flex-algo and detach it from TE attributes --- release/models/flex-algo/.spec.yml | 6 + .../models/flex-algo/openconfig-flexalgo.yang | 407 ++++++++++++++++++ .../openconfig-segment-routing.yang | 137 +++++- 3 files changed, 549 insertions(+), 1 deletion(-) create mode 100644 release/models/flex-algo/.spec.yml create mode 100644 release/models/flex-algo/openconfig-flexalgo.yang diff --git a/release/models/flex-algo/.spec.yml b/release/models/flex-algo/.spec.yml new file mode 100644 index 000000000..8b2e4b3ec --- /dev/null +++ b/release/models/flex-algo/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-flexalgo + docs: + - yang/flex-algo/openconfig-flexalgo.yang + build: + - yang/flex-algo/openconfig-flexalgo.yang + run-ci: true diff --git a/release/models/flex-algo/openconfig-flexalgo.yang b/release/models/flex-algo/openconfig-flexalgo.yang new file mode 100644 index 000000000..2fd904b86 --- /dev/null +++ b/release/models/flex-algo/openconfig-flexalgo.yang @@ -0,0 +1,407 @@ +module openconfig-flexalgo { + yang-version 1.1; + namespace "http://openconfig.net/yang/flexalgo"; + prefix "oc-flexalgo"; + + import openconfig-network-instance { + prefix "oc-ni"; + } + import openconfig-extensions { + prefix oc-ext; + } + import openconfig-interfaces { + prefix oc-if; + } + oc-ext:openconfig-version "0.1.0"; + + organization + "OpenConfig working group"; + contact + "OpenConfig working group + www.openconfig.net "; + description + "This YANG module defines the configurational and operational + parameters related to IGP Flex-Algorithms"; + + revision 2023-05-24 { + description + "Initial revision of flexalgo module"; + reference + "0.1.0"; + } + + /* Types definitions */ + + typedef flex-algo-metric-type { + type enumeration { + enum IGP { + value 0; + description + "IGP metric to be used during the calculation."; + } + enum MIN_DELAY { + value 1; + description + "Min Unidirectional Link Delay as defined in [RFC7810] to + be used during the calculation."; + } + enum TE_METRIC { + value 2; + description + "TE default metric as defined in [RFC5305] to be used + during the calculation."; + } + } + description + "Type of metric to be used during a Flex Algo path + computation"; + } + + typedef flex-algo-id { + type uint8 { + range "128..255"; + } + description + "Flex-Algorithm identifies which algorithm should be used during + path computation"; + } + + typedef flex-algo-calc-type { + type uint8 { + range "0..127"; + } + default "0"; + description + "Calculation type value ranges from 0 to 127 both inclusive + from the IGP Algorithm Types registry defined under + Interior Gateway Protocol (IGP) + Parameters IANA registries. + If the required calculation type is Shortest Path First, + the value 0 SHOULD appear in this field."; + } + + grouping algorithm-attributes { + description + "All of the possible attributes for an flexible algorithm + definition"; + leaf flex-algo-id { + type flex-algo-id; + mandatory true; + description + "Flex Algorithm Identifier"; + } + leaf flex-algo-name { + type string; + description + "Flexible Algorithm name"; + } + leaf flex-algo-description { + type string; + description + "Description of this flex-algo"; + } + leaf metric-type { + type flex-algo-metric-type; + default "IGP"; + description + "Indicates which is the corresponding metric type for + this algorithm"; + } + leaf calc-type { + type flex-algo-calc-type; + description + "Indicates the calculation type, if advertised"; + } + leaf priority { + type uint8; + default "237"; + description + "Indicates the priority for this algorithm"; + } + + leaf-list exclude { + type leafref { + path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/" + + "admin-group/admin-group-name"; + } + description + "extended-admin-groups to exclude in path calculation."; + } + leaf-list include-all { + type leafref { + path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/" + + "admin-group/admin-group-name"; + } + description + "extended-admin-groups, all of which must be included"; + } + leaf-list include-any { + type leafref { + path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/" + + "admin-group/admin-group-name"; + } + description + "extended-admin-groups, one of which must be included"; + } + leaf-list srlg-exclude { + type leafref { + path "../../../../flex-algo-global-attributes/srlgs/srlg/name"; + } + description + "list of references to named SRLGs to be excluded"; + } + leaf algo-flags { + type boolean; + description + "Advertise flex-algo definition flags"; + } + } + + grouping flex-algo-definition-top { + description + "Top level grouping for flexible Algorithms and their definitions"; + list algorithm { + key "flex-algo-id"; + description + "List of Flexible Algorithms"; + leaf flex-algo-id { + type leafref { + path "../config/flex-algo-id"; + } + description + "Name for a Flexible Algorithm"; + } + container config { + description + "Attributes for a Flexible Algorithm"; + uses algorithm-attributes; + } + container state { + config false; + description + "Attributes for a Flexible Algorithm"; + uses algorithm-attributes; + } + } + } + + grouping flex-algo-interface-attributes-config { + description + "global level definitions for interfaces + on which TE is run"; + + leaf interface-id { + type oc-if:interface-id; + description + "Id of the interface"; + } + + leaf te-metric { + type uint32; + description + "TE specific metric for the link"; + } + + leaf min-delay { + type uint32; + description + "Min delay for the link"; + } + + leaf-list srlg-membership { + type leafref { + path "../../../../flex-algo-global-attributes/srlgs/srlg/name"; + } + description + "list of references to named shared risk link groups that the + interface belongs to."; + } + + leaf-list admin-group { + type leafref { + path "../../../../flex-algo-global-attributes/flex-algo-admin-groups/" + + "admin-group/admin-group-name"; + } + description + "list of admin groups (by name) on the interface"; + } + } + + grouping flex-algo-interface-attributes-top { + description "Top level grouping for flex Algorithm attributes for interfaces"; + + list interface { + key "interface-id"; + description + "List of flex-algo interfaces"; + + leaf interface-id { + type leafref { + path "../config/interface-id"; + } + description + "Reference to the interface id list key"; + } + + container config { + description + "Configuration parameters related to flex-algo interfaces:"; + uses flex-algo-interface-attributes-config; + } + + container state { + config false; + description + "State parameters related to flex-algo interfaces"; + uses flex-algo-interface-attributes-config; + } + } + } + + grouping flex-algo-srlg-config { + description + "Configuration of various attributes associated with the SRLG"; + + leaf name { + type string; + description + "SRLG group identifier"; + } + + leaf value { + type uint32; + description + "group ID for the SRLG"; + } + } + + grouping flex-algo-srlg-top { + description + "Top level grouping for flex algo shared risk link groups."; + + container srlgs { + description + "Shared risk link groups attributes"; + list srlg { + key "name"; + description + "List of shared risk link groups"; + + leaf name { + type leafref { + path "../config/name"; + } + description + "The SRLG group identifier"; + } + + container config { + description + "Configuration parameters related to the SRLG"; + uses flex-algo-srlg-config; + } + + container state { + config false; + description + "State parameters related to the SRLG"; + uses flex-algo-srlg-config; + } + } + } + } + + grouping flex-algo-admin-group-config { + description + "configuration data for MPLS link admin groups"; + + leaf admin-group-name { + type string; + description + "name for mpls admin-group"; + } + + leaf bit-position { + type uint32; + description + "bit-position value for mpls admin-group. The value + for the admin group is an integer that represents one + of the bit positions in the admin-group bitmask. Values + between 0 and 31 are interpreted as the original limit + of 32 admin groups. Values >=32 are interpreted as + extended admin group values as per RFC7308."; + } + } + + grouping flex-algo-admin-groups-top { + description + "top-level mpls admin-groups config + and state containers"; + + container flex-algo-admin-groups { + description + "Top-level container for admin-groups configuration + and state"; + + list admin-group { + key "admin-group-name"; + description + "configuration of value to name mapping + for mpls affinities/admin-groups"; + + leaf admin-group-name { + type leafref { + path "../config/admin-group-name"; + } + description + "name for mpls admin-group"; + } + container config { + description + "Configurable items for admin-groups"; + uses flex-algo-admin-group-config; + } + + container state { + config false; + description + "Operational state for admin-groups"; + uses flex-algo-admin-group-config; + } + } + } + } + + grouping flex-algo-top { + description + "Top level grouping for Flexible Algorithm Definitions"; + + container flex-algorithm { + description "Flex Algorithms definitions and the attributes"; + + container flex-algorithm-definition { + description "Flexible Algorithms and their definitions"; + uses flex-algo-definition-top; + } + + container flex-algo-global-attributes { + description "Flexible Algorithm global attributes"; + uses flex-algo-srlg-top; + uses flex-algo-admin-groups-top; + } + + container flex-algo-interface-attributes { + description "Flexible Algorithm attributes for interfaces"; + uses flex-algo-interface-attributes-top; + } + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance" { + description + "List of Flexible Algorithms and their definitions"; + + uses flex-algo-top; + } +} + diff --git a/release/models/segment-routing/openconfig-segment-routing.yang b/release/models/segment-routing/openconfig-segment-routing.yang index e40e57bda..b88ffb3b7 100644 --- a/release/models/segment-routing/openconfig-segment-routing.yang +++ b/release/models/segment-routing/openconfig-segment-routing.yang @@ -14,6 +14,7 @@ module openconfig-segment-routing { import ietf-yang-types { prefix "yang"; } import openconfig-segment-routing-types { prefix "oc-srt"; } import openconfig-srte-policy { prefix "oc-srte"; } + import openconfig-isis-types { prefix "oc-isis-types"; } // meta organization "OpenConfig working group"; @@ -35,7 +36,13 @@ module openconfig-segment-routing { - SR SID advertisements - instantiated within the relevant IGP. - SR-specific counters - instantied within the relevant dataplane."; - oc-ext:openconfig-version "0.3.2"; + oc-ext:openconfig-version "0.4.0"; + + revision "2023-05-24" { + description + "Add flex-algo model"; + reference "0.4.0"; + } revision "2023-02-06" { description @@ -556,6 +563,36 @@ module openconfig-segment-routing { } } + grouping flex-algo-binding-attributes { + description + "Attributes for Flexible Algorithm bindings"; + leaf flex-algo-id { + type uint8 { + range "128..255"; + } + description + "Flexible Algorithm identifier"; + } + leaf isis-level { + type oc-isis-types:level-type; + default "LEVEL_1_2"; + description + "IS-IS Level associated with this Flex Algorithm"; + } + leaf advertised { + type boolean; + default "false"; + description + "Indicates if the Flex Algorithm definition is advertised by this node"; + } + leaf participate { + type boolean; + default "false"; + description + "Indicates if the node participates in this Flex Algorithm"; + } + } + grouping sr-igp-top { description "Per-instance configuration and state parameters for Segment Routing @@ -579,6 +616,34 @@ module openconfig-segment-routing { IGP instance."; uses sr-igp-config; } + + container flex-algorithm-bindings { + description + "Flex Algorithm bindings"; + list flex-algorithm-binding { + key "flex-algo-id"; + description + "Flex Algorithm binding"; + leaf flex-algo-id { + type leafref { + path "../config/flex-algo-id"; + } + description + "Flex Algorithm identifier used by IGP"; + } + container config { + description + "Attributes of a FAD binding"; + uses flex-algo-binding-attributes; + } + container state { + config false; + description + "Attributes of a FAD binding"; + uses flex-algo-binding-attributes; + } + } + } } } @@ -687,6 +752,32 @@ module openconfig-segment-routing { } } + grouping sr-igp-interface-flex-algo-prefix-sid-config { + description + "Configuration parameters relating to an IGP prefix SID advertisement for + Flexible Algorithms"; + leaf prefix { + type inet:ip-prefix; + description + "The IP prefix for which the IGP prefix SID should be advertised. The + value specified is a local prefix on the interface which is advertised + into the IGP."; + } + leaf flex-algo-id { + type uint8 { + range "128..255"; + } + description + "Flexible Algorithm identifier for the prefix segment."; + } + leaf sid-id { + type oc-srt:sr-sid-type; + description + "The Segment Identifier to be used when advertising the IGP Prefix SID for + the Flexible Algorithm."; + } + } + grouping sr-igp-interface-top { description "Per-interface configuration and operational state relating to an @@ -736,6 +827,50 @@ module openconfig-segment-routing { } } + container flex-algo-prefix-sids { + description + "Configuration and operational state parameters relating to segment + routing flexible algorithm for an interface within the IGP."; + + list flex-algo-prefix-sid { + key "prefix flex-algo-id"; + + description + "IGP prefix segments allocated for Flexible Algorithms"; + + leaf prefix { + type leafref { + path "../config/prefix"; + } + description + "Reference to the prefix for which Flexible Algorithm Prefix SID is to be + advertised."; + } + + leaf flex-algo-id { + type leafref { + path "../config/flex-algo-id"; + } + description + "Reference to the Flexible Algorithm for which Flexible Algorithm Prefix + SID is to be advertised."; + } + + container config { + description + "Configuration parameters for the IGP Flexible Algorithm Prefix SID."; + uses sr-igp-interface-flex-algo-prefix-sid-config; + } + + container state { + config false; + description + "Operational state parameters for the IGP Flexible Algorithm Prefix SID."; + uses sr-igp-interface-flex-algo-prefix-sid-config; + } + } + } + container adjacency-sids { description "Configuration and operational state parameters relating to From ce227e79d030f9aa52747156daf79e99bb16ad15 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 28 Jul 2023 14:30:43 -0700 Subject: [PATCH 195/372] Revert "Add multicast counters to ip interface, remove physical counters from subinterface (#905)" (#933) This reverts commit e5ce68cb12ed6fe7e06bbd768721965bf3ae974e. --- .../models/interfaces/openconfig-if-ip.yang | 111 +++- .../interfaces/openconfig-interfaces.yang | 622 ++++++++---------- 2 files changed, 369 insertions(+), 364 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 90510e9e7..498a90bec 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,14 +44,7 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.5.0"; - - revision "2023-07-14" { - description - "Move counters which apply to both interfaces and subinterfaces to - a common grouping. Deprecate physical counters from subinterface"; - reference "3.5.0"; - } + oc-ext:openconfig-version "3.4.0"; revision "2023-06-30" { description @@ -237,6 +230,42 @@ module openconfig-if-ip { "Packet and byte counters for IP transmission and reception for the address family."; + + leaf in-pkts { + type oc-yang:counter64; + description + "The total number of IP packets received for the specified + address family, including those received in error"; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-octets { + type oc-yang:counter64; + description + "The total number of octets received in input IP packets + for the specified address family, including those received + in error."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf in-error-pkts { + // TODO: this counter combines several error conditions -- + // could consider breaking them out to separate leaf nodes + type oc-yang:counter64; + description + "Number of IP packets discarded due to errors for the + specified address family, including errors in the IP + header, no route found to the IP destination, invalid + address, unknown protocol, etc."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + leaf in-forwarded-pkts { type oc-yang:counter64; description @@ -262,6 +291,57 @@ module openconfig-if-ip { Internet Protocol (IP)"; } + leaf in-discarded-pkts { + type oc-yang:counter64; + description + "The number of input IP packets for the + specified address family, for which no problems were + encountered to prevent their continued processing, but + were discarded (e.g., for lack of buffer space)."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-pkts { + type oc-yang:counter64; + description + "The total number of IP packets for the + specified address family that the device supplied + to the lower layers for transmission. This includes + packets generated locally and those forwarded by the + device."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-octets { + type oc-yang:counter64; + description + "The total number of octets in IP packets for the + specified address family that the device + supplied to the lower layers for transmission. This + includes packets generated locally and those forwarded by + the device."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + + leaf out-error-pkts { + // TODO: this counter combines several error conditions -- + // could consider breaking them out to separate leaf nodes + type oc-yang:counter64; + description + "Number of IP packets for the specified address family + locally generated and discarded due to errors, including + no route found to the IP destination."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + leaf out-forwarded-pkts { type oc-yang:counter64; description @@ -283,10 +363,25 @@ module openconfig-if-ip { "RFC 4293 - Management Information Base for the Internet Protocol (IP)"; } + + leaf out-discarded-pkts { + type oc-yang:counter64; + description + "The number of output IP packets for the + specified address family for which no problem was + encountered to prevent their transmission to their + destination, but were discarded (e.g., for lack of + buffer space)."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } } + } + grouping ipv4-global-config { description "Configuration data for IPv4 interfaces across diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index 9517a92ab..7d349a07c 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,16 +51,9 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.0.2"; - revision "2023-07-14" { - description - "Move counters which apply to both interfaces and subinterfaces to - a common grouping. Deprecate physical counters from subinterface"; - reference "3.5.0"; - } - - revision "2023-02-06" { +revision "2023-02-06" { description "Add further specification to interface-ref type to clarify that the interface and subinterface leaves @@ -644,365 +637,298 @@ module openconfig-interfaces { } } -grouping interface-common-counters-state { - description - "Operational state representing interface counters and statistics - applicable to (physical) interfaces and (logical) subinterfaces."; - - leaf in-octets { - type oc-yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } - - leaf in-pkts { - type oc-yang:counter64; - description - "The total number of packets received on the interface, - including all unicast, multicast, broadcast and bad packets - etc."; - reference - "RFC 2819: Remote Network Monitoring Management Information Base. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } - - leaf in-unicast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } - leaf in-broadcast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInBroadcastPkts. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + grouping interface-counters-state { + description + "Operational state representing interface counters + and statistics."; - leaf in-multicast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInMulticastPkts. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + //TODO: we may need to break this list of counters into those + //that would appear for physical vs. subinterface or logical + //interfaces. For now, just replicating the full stats + //grouping to both interface and subinterface. - leaf in-errors { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + oc-ext:operational; - leaf in-discards { - type oc-yang:counter64; + container counters { description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. + "A collection of interface-related statistics objects."; - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; + leaf in-octets { + type oc-yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + leaf in-pkts { + type oc-yang:counter64; + description + "The total number of packets received on the interface, + including all unicast, multicast, broadcast and bad packets + etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information + Base"; + } - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + leaf in-unicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } - leaf out-octets { - type oc-yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. + leaf in-broadcast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + leaf in-multicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } - leaf out-pkts { - type oc-yang:counter64; - description - "The total number of packets transmitted out of the - interface, including all unicast, multicast, broadcast, - and bad packets etc."; - reference - "RFC 2819: Remote Network Monitoring Management Information Base. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + leaf in-discards { + type oc-yang:counter64; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. - leaf out-unicast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; - leaf out-broadcast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutBroadcastPkts. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } - leaf out-multicast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutMulticastPkts. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } - leaf out-discards { - type oc-yang:counter64; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + leaf in-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } - leaf out-errors { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors. - RFC 4293: Management Information Base for the - Internet Protocol (IP)."; - } + leaf in-unknown-protos { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } - leaf last-clear { - type oc-types:timeticks64; - description - "Timestamp of the last time the interface counters were - cleared. + leaf in-fcs-errors { + type oc-yang:counter64; + description + "Number of received packets which had errors in the + frame check sequence (FCS), i.e., framing errors. - The value is the timestamp in nanoseconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - oc-ext:telemetry-on-change; - } - } + Discontinuities in the value of this counter can occur + when the device is re-initialization as indicated by the + value of 'last-clear'."; + } - grouping interface-counters-state { - description - "Operational state representing interface counters - and statistics."; + leaf out-octets { + type oc-yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } - oc-ext:operational; + leaf out-pkts { + type oc-yang:counter64; + description + "The total number of packets transmitted out of the + interface, including all unicast, multicast, broadcast, + and bad packets etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information + Base"; + } - leaf in-unknown-protos { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } + leaf out-unicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } - leaf in-fcs-errors { - type oc-yang:counter64; - description - "Number of received packets which had errors in the - frame check sequence (FCS), i.e., framing errors. + leaf out-broadcast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } - Discontinuities in the value of this counter can occur - when the device is re-initialization as indicated by the - value of 'last-clear'."; - } - leaf carrier-transitions { - type oc-yang:counter64; - description - "Number of times the interface state has transitioned - between up and down since the time the device restarted - or the last-clear time, whichever is most recent."; - oc-ext:telemetry-on-change; - } - } + leaf out-multicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } - grouping subinterfaces-counters-state { - description - "Operational state representing counters unique to subinterfaces"; + leaf out-discards { + type oc-yang:counter64; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } - oc-ext:operational; - leaf in-unknown-protos { - type oc-yang:counter64; - status deprecated; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } + leaf out-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } - leaf in-fcs-errors { - type oc-yang:counter64; - status deprecated; - description - "Number of received packets which had errors in the - frame check sequence (FCS), i.e., framing errors. + leaf carrier-transitions { + type oc-yang:counter64; + description + "Number of times the interface state has transitioned + between up and down since the time the device restarted + or the last-clear time, whichever is most recent."; + oc-ext:telemetry-on-change; + } - Discontinuities in the value of this counter can occur - when the device is re-initialization as indicated by the - value of 'last-clear'."; - } + leaf last-clear { + type oc-types:timeticks64; + description + "Timestamp of the last time the interface counters were + cleared. - leaf carrier-transitions { - type oc-yang:counter64; - status deprecated; - description - "Number of times the interface state has transitioned - between up and down since the time the device restarted - or the last-clear time, whichever is most recent."; - oc-ext:telemetry-on-change; + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + oc-ext:telemetry-on-change; + } } - } // data definition statements @@ -1094,15 +1020,7 @@ grouping interface-common-counters-state { } uses interface-common-state; - - container counters { - description - "A collection of interface specific statistics entitites which are - not common to subinterfaces."; - - uses interface-common-counters-state; - uses subinterfaces-counters-state; - } + uses interface-counters-state; } grouping subinterfaces-top { @@ -1201,15 +1119,7 @@ grouping interface-common-counters-state { uses interface-phys-config; uses interface-common-state; - - container counters { - description - "A collection of interface specific statistics entitites which are - not common to subinterfaces."; - - uses interface-common-counters-state; - uses interface-counters-state; - } + uses interface-counters-state; } uses interface-phys-holdtime-top; From 293774ea6f0f73e722991e0dc2e1b107af9bc14d Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 1 Aug 2023 12:53:22 -0700 Subject: [PATCH 196/372] Test CI --- cloudbuild.yaml | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 88148e530..8e0eb834c 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,7 +52,8 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v10.*' | sort -V | tail -1) + #branch=$(git tag -l 'v10.*' | sort -V | tail -1) + branch=fail-at-generator-pull git checkout $branch volumes: - name: 'ssh' @@ -213,16 +214,6 @@ steps: id: 'oc-pyang' ############### GOYANG/YGOT ############### -- name: 'golang' - entrypoint: 'go' - args: ['install', 'github.com/openconfig/ygot/generator@latest'] - volumes: - - name: 'gopath' - path: /go - env: - - 'GOPATH=/go' - waitFor: ['go path creation'] - id: 'goyang-ygot prep' - name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/goyang-ygot/test.sh"] @@ -237,7 +228,7 @@ steps: - 'COMMIT_SHA=$COMMIT_SHA' - '_REPO_SLUG=$_REPO_SLUG' - 'BRANCH_NAME=$BRANCH_NAME' - waitFor: ['validator prep', 'goyang-ygot prep', 'oc-pyang'] + waitFor: ['validator prep', 'go path creation', 'oc-pyang'] id: 'goyang-ygot' ############### PYANG ############### From 502f9946bde83d6cbe95244469898dce23dba4b9 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 1 Aug 2023 13:10:29 -0700 Subject: [PATCH 197/372] Trigger Build From ec4a4ef1673e5a6676eaec42bcc880c5f95b3cd8 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:10:50 -0700 Subject: [PATCH 198/372] Try diff script --- .github/workflows/diff.yaml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/diff.yaml diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml new file mode 100644 index 000000000..fcbd08665 --- /dev/null +++ b/.github/workflows/diff.yaml @@ -0,0 +1,29 @@ +name: OpenConfig YANG Diff + +on: + pull_request: + branches: [ master ] + +jobs: + build: + name: Backward Incompatibility Check + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Make sure all backward-incompatible changes are covered by version changes. + run: | + readonly HEAD=${{ github.event.pull_request.head.sha }} + readonly BASE="$(git merge-base origin/main "${HEAD}")" + + BASEREPODIR=public_base + git clone "git@github.com:public.git" "${BASEREPODIR}" --branch "${BASE}" + oldroot="${BASEREPODIR}" + newroot=. + oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') + newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') + + go install github.com/openconfig/models-ci@diff-cli + models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From 291f74ea88a0d132359b469cc0709d436246a8ed Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:11:44 -0700 Subject: [PATCH 199/372] try --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index fcbd08665..20ac34339 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -19,7 +19,7 @@ jobs: readonly BASE="$(git merge-base origin/main "${HEAD}")" BASEREPODIR=public_base - git clone "git@github.com:public.git" "${BASEREPODIR}" --branch "${BASE}" + git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" --branch "${BASE}" oldroot="${BASEREPODIR}" newroot=. oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') From aaf661b9b07f30a3402f254d4150298d03d81ed4 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:13:53 -0700 Subject: [PATCH 200/372] Debug --- .github/workflows/diff.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 20ac34339..02306c71a 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -17,6 +17,8 @@ jobs: run: | readonly HEAD=${{ github.event.pull_request.head.sha }} readonly BASE="$(git merge-base origin/main "${HEAD}")" + echo $HEAD + echo $BASE BASEREPODIR=public_base git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" --branch "${BASE}" From f5ea3ac9812c64dec4e56179c08dc3fafde23729 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:14:47 -0700 Subject: [PATCH 201/372] Debug --- .github/workflows/diff.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 02306c71a..134de3787 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -17,8 +17,8 @@ jobs: run: | readonly HEAD=${{ github.event.pull_request.head.sha }} readonly BASE="$(git merge-base origin/main "${HEAD}")" - echo $HEAD - echo $BASE + echo "HEAD is $HEAD" + echo "BASE is $BASE" BASEREPODIR=public_base git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" --branch "${BASE}" From 0de612907df0995166f23955d9ddafbc472f8028 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:17:20 -0700 Subject: [PATCH 202/372] Debug --- .github/workflows/diff.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 134de3787..266e67aff 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -11,14 +11,14 @@ jobs: steps: - name: Check out code - uses: actions/checkout@v2 + uses: actions/checkout@v3 + with: + fetch-depth: 0 - name: Make sure all backward-incompatible changes are covered by version changes. run: | readonly HEAD=${{ github.event.pull_request.head.sha }} readonly BASE="$(git merge-base origin/main "${HEAD}")" - echo "HEAD is $HEAD" - echo "BASE is $BASE" BASEREPODIR=public_base git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" --branch "${BASE}" From 9b15f0763d2eab33304349be99c2dacb3cbc8af3 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:18:31 -0700 Subject: [PATCH 203/372] Debug --- .github/workflows/diff.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 266e67aff..5ba395ecc 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -10,6 +10,11 @@ jobs: runs-on: ubuntu-latest steps: + - name: Install go + uses: actions/setup-go@v2 + with: + go-version: '1.20' + - name: Check out code uses: actions/checkout@v3 with: From 913be2c47ead2b494cf2404234114cd223b52bfa Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:18:48 -0700 Subject: [PATCH 204/372] Debug --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 5ba395ecc..c8bfcd77e 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -23,7 +23,7 @@ jobs: - name: Make sure all backward-incompatible changes are covered by version changes. run: | readonly HEAD=${{ github.event.pull_request.head.sha }} - readonly BASE="$(git merge-base origin/main "${HEAD}")" + readonly BASE="$(git merge-base origin/master "${HEAD}")" BASEREPODIR=public_base git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" --branch "${BASE}" From 3a4766ae1dd8a4eadc4812c9ed6e4b433170cbc0 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:21:45 -0700 Subject: [PATCH 205/372] Debug --- .github/workflows/diff.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index c8bfcd77e..d32a59697 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -26,7 +26,10 @@ jobs: readonly BASE="$(git merge-base origin/master "${HEAD}")" BASEREPODIR=public_base - git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" --branch "${BASE}" + git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" + cd "${BASEREPODIR}" + git checkout "${BASE}" + cd .. oldroot="${BASEREPODIR}" newroot=. oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') From fd6309a2d3d9be49187036e86c458fd8728f75ec Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:23:35 -0700 Subject: [PATCH 206/372] Debug --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index d32a59697..a4b5ac2a4 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -35,5 +35,5 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - go install github.com/openconfig/models-ci@diff-cli + go install github.com/openconfig/models-ci@fca2350 models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From 40f20640e1fa2be30315ce749616452fda9a00aa Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:35:41 -0700 Subject: [PATCH 207/372] Debug --- .github/workflows/diff.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index a4b5ac2a4..ba052b0a5 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -26,10 +26,13 @@ jobs: readonly BASE="$(git merge-base origin/master "${HEAD}")" BASEREPODIR=public_base - git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" - cd "${BASEREPODIR}" + #git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" + #cd "${BASEREPODIR}" + mkdir "${BASEREPODIR}" git checkout "${BASE}" - cd .. + cp release/models third_party "${BASEREPODIR}" + git checkout "${HEAD}" + #cd .. oldroot="${BASEREPODIR}" newroot=. oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') From 8ee9284f1b29c70b98e53670bde9411ad124f692 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:36:13 -0700 Subject: [PATCH 208/372] Debug --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index ba052b0a5..046fffefd 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -30,7 +30,7 @@ jobs: #cd "${BASEREPODIR}" mkdir "${BASEREPODIR}" git checkout "${BASE}" - cp release/models third_party "${BASEREPODIR}" + cp -r release/models third_party "${BASEREPODIR}" git checkout "${HEAD}" #cd .. oldroot="${BASEREPODIR}" From 1a1de47b6f003e761bf78d57319ff1c13e0a060d Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:37:17 -0700 Subject: [PATCH 209/372] Debug --- .github/workflows/diff.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 046fffefd..10f4bdf8b 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -30,7 +30,8 @@ jobs: #cd "${BASEREPODIR}" mkdir "${BASEREPODIR}" git checkout "${BASE}" - cp -r release/models third_party "${BASEREPODIR}" + cp -r release/models "${BASEREPODIR}/release" + cp -r third_party "${BASEREPODIR}" git checkout "${HEAD}" #cd .. oldroot="${BASEREPODIR}" From fa46e18747346192a2b546d867c20ad74de861a5 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:39:12 -0700 Subject: [PATCH 210/372] Remove a leaf without updating major version --- release/models/acl/openconfig-acl.yang | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 6b3977907..03d09c1bb 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.3"; + oc-ext:openconfig-version "1.3.4"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.3"; + reference "1.3.4"; } revision "2023-01-29" { @@ -293,16 +293,16 @@ module openconfig-acl { must be specified for each ACL entry"; } - leaf log-action { - type identityref { - base LOG_ACTION; - } - default LOG_NONE; - description - "Specifies the log action and destination for - matched packets. The default is not to log the - packet."; - } + //leaf log-action { + // type identityref { + // base LOG_ACTION; + // } + // default LOG_NONE; + // description + // "Specifies the log action and destination for + // matched packets. The default is not to log the + // packet."; + //} } From 5ce9702bf0dfe33a1e55671e46c431ca7456d94e Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:41:45 -0700 Subject: [PATCH 211/372] Remove a leaf without updating major version --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 10f4bdf8b..264e3b8d6 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -28,7 +28,7 @@ jobs: BASEREPODIR=public_base #git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" #cd "${BASEREPODIR}" - mkdir "${BASEREPODIR}" + mkdir -p "${BASEREPODIR}/release" git checkout "${BASE}" cp -r release/models "${BASEREPODIR}/release" cp -r third_party "${BASEREPODIR}" From 9089ca47f6bb83bd331a9919eb901a06bc8d90c9 Mon Sep 17 00:00:00 2001 From: wenovus Date: Wed, 2 Aug 2023 13:42:49 -0700 Subject: [PATCH 212/372] Now update major version --- release/models/acl/openconfig-acl.yang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 03d09c1bb..b8d557367 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.4"; + oc-ext:openconfig-version "2.0.0"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.4"; + reference "2.0.0"; } revision "2023-01-29" { From 74738929acfd3981b09512d0d4d7f6cff07fc402 Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Wed, 2 Aug 2023 17:00:16 -0700 Subject: [PATCH 213/372] Update openconfig-network-instance-policy.yang (#925) * Clarify `/routing-policy/policy-definitions/policy-definition/statements/statement/conditions/match-protocol-instance/config/protocol-name` --- .../openconfig-network-instance-policy.yang | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-policy.yang b/release/models/network-instance/openconfig-network-instance-policy.yang index a2897dcbd..d72e8f008 100644 --- a/release/models/network-instance/openconfig-network-instance-policy.yang +++ b/release/models/network-instance/openconfig-network-instance-policy.yang @@ -25,9 +25,16 @@ module openconfig-network-instance-policy { actions) for the network instance model. These statements are generally added to the routing policy model."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.1.2"; - revision "2018-11-21" { + revision "2023-07-25" { + description + "Expand description of + match-protocol-instance/protocol-name."; + reference "0.1.2"; + } + +revision "2018-11-21" { description "Add OpenConfig module metadata extensions."; reference "0.1.1"; @@ -64,7 +71,11 @@ module openconfig-network-instance-policy { type string; description "The name of the protocol instance to match - on in the local network instance"; + on in the local network instance. The string + must match one of /network-instances/ + network-instance/protocols/ + protocol/identifier in the local network + instance."; } } From 65dc8af1b51c33ad974267bbbf696c3b89c872e4 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:40:50 -0700 Subject: [PATCH 214/372] Revert YANG changes --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 264e3b8d6..b1303fcf9 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -39,5 +39,5 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - go install github.com/openconfig/models-ci@fca2350 + go install github.com/openconfig/models-ci@94a63b5 models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From f00518c30a34e9acbe4faf94301bde6c0cd7cf8d Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:42:51 -0700 Subject: [PATCH 215/372] now test just minor version increment again --- release/models/acl/openconfig-acl.yang | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index b8d557367..03d09c1bb 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "1.3.4"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "2.0.0"; + reference "1.3.4"; } revision "2023-01-29" { From 77b0dae76856b0dcc25ad4505b3efd970450c156 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:47:18 -0700 Subject: [PATCH 216/372] Remove useless output --- .github/workflows/diff.yaml | 5 +---- release/models/acl/openconfig-acl.yang | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index b1303fcf9..3270afb71 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -26,18 +26,15 @@ jobs: readonly BASE="$(git merge-base origin/master "${HEAD}")" BASEREPODIR=public_base - #git clone "https://github.com/openconfig/public.git" "${BASEREPODIR}" - #cd "${BASEREPODIR}" mkdir -p "${BASEREPODIR}/release" git checkout "${BASE}" cp -r release/models "${BASEREPODIR}/release" cp -r third_party "${BASEREPODIR}" git checkout "${HEAD}" - #cd .. oldroot="${BASEREPODIR}" newroot=. oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - go install github.com/openconfig/models-ci@94a63b5 + go install github.com/openconfig/models-ci@94a63b5 > /dev/null models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 03d09c1bb..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.4"; + oc-ext:openconfig-version "1.3.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.4"; + reference "1.3.3"; } revision "2023-01-29" { @@ -293,16 +293,16 @@ module openconfig-acl { must be specified for each ACL entry"; } - //leaf log-action { - // type identityref { - // base LOG_ACTION; - // } - // default LOG_NONE; - // description - // "Specifies the log action and destination for - // matched packets. The default is not to log the - // packet."; - //} + leaf log-action { + type identityref { + base LOG_ACTION; + } + default LOG_NONE; + description + "Specifies the log action and destination for + matched packets. The default is not to log the + packet."; + } } From 03381398be7e0434cebecab691f8f816fc317933 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:51:20 -0700 Subject: [PATCH 217/372] Test --- .github/workflows/diff.yaml | 2 +- release/models/acl/openconfig-acl.yang | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 3270afb71..bea6c452f 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -36,5 +36,5 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - go install github.com/openconfig/models-ci@94a63b5 > /dev/null + go install github.com/openconfig/models-ci@94a63b5 &> /dev/null models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 6b3977907..03d09c1bb 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.3"; + oc-ext:openconfig-version "1.3.4"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.3"; + reference "1.3.4"; } revision "2023-01-29" { @@ -293,16 +293,16 @@ module openconfig-acl { must be specified for each ACL entry"; } - leaf log-action { - type identityref { - base LOG_ACTION; - } - default LOG_NONE; - description - "Specifies the log action and destination for - matched packets. The default is not to log the - packet."; - } + //leaf log-action { + // type identityref { + // base LOG_ACTION; + // } + // default LOG_NONE; + // description + // "Specifies the log action and destination for + // matched packets. The default is not to log the + // packet."; + //} } From be0fb1a8f0f9f473e90ec103bb345eee1ffe6324 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:52:46 -0700 Subject: [PATCH 218/372] Test --- .github/workflows/diff.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index bea6c452f..3c5de2a90 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -36,5 +36,8 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - go install github.com/openconfig/models-ci@94a63b5 &> /dev/null + go install github.com/openconfig/models-ci@94a63b5 + + - name: Make sure all backward-incompatible changes are covered by version changes. + run: | models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From 276f2522f1d9620fadcaa666de1fa9cad931fe74 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:54:08 -0700 Subject: [PATCH 219/372] Test --- .github/workflows/diff.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 3c5de2a90..f347763fe 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -20,6 +20,10 @@ jobs: with: fetch-depth: 0 + - name: Install models-ci + run: | + go install github.com/openconfig/models-ci@94a63b5 + - name: Make sure all backward-incompatible changes are covered by version changes. run: | readonly HEAD=${{ github.event.pull_request.head.sha }} @@ -36,8 +40,4 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - go install github.com/openconfig/models-ci@94a63b5 - - - name: Make sure all backward-incompatible changes are covered by version changes. - run: | models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From f8a1c31697f47661d55e5539b6202c57b7316ab3 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:55:19 -0700 Subject: [PATCH 220/372] Test --- .github/workflows/diff.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index f347763fe..1b83577bb 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -20,7 +20,7 @@ jobs: with: fetch-depth: 0 - - name: Install models-ci + - name: Install models-ci CLI run: | go install github.com/openconfig/models-ci@94a63b5 @@ -40,4 +40,5 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') + echo "-----------------------------" models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From fc2edf2cf6df700e3c4a08f517cbafbca2a11156 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:56:38 -0700 Subject: [PATCH 221/372] Test --- .github/workflows/diff.yaml | 1 + release/models/acl/openconfig-acl.yang | 24 ++++++++++++------------ 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 1b83577bb..a5bc6247a 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -42,3 +42,4 @@ jobs: echo "-----------------------------" models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" + echo "-----------------------------" diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 03d09c1bb..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.4"; + oc-ext:openconfig-version "1.3.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.4"; + reference "1.3.3"; } revision "2023-01-29" { @@ -293,16 +293,16 @@ module openconfig-acl { must be specified for each ACL entry"; } - //leaf log-action { - // type identityref { - // base LOG_ACTION; - // } - // default LOG_NONE; - // description - // "Specifies the log action and destination for - // matched packets. The default is not to log the - // packet."; - //} + leaf log-action { + type identityref { + base LOG_ACTION; + } + default LOG_NONE; + description + "Specifies the log action and destination for + matched packets. The default is not to log the + packet."; + } } From 7b1da0f065e082b0837050e46bcb7b1ba6b76bc4 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:58:32 -0700 Subject: [PATCH 222/372] Test --- .github/workflows/diff.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index a5bc6247a..0da972a3e 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install models-ci CLI run: | - go install github.com/openconfig/models-ci@94a63b5 + go install github.com/openconfig/models-ci@15b19a4 - name: Make sure all backward-incompatible changes are covered by version changes. run: | @@ -40,6 +40,4 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - echo "-----------------------------" models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" - echo "-----------------------------" From 5c3a0bde0bdd5afef5cf964c809b77f158cc7ef4 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 10:58:54 -0700 Subject: [PATCH 223/372] Test --- release/models/acl/openconfig-acl.yang | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 6b3977907..03d09c1bb 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.3"; + oc-ext:openconfig-version "1.3.4"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.3"; + reference "1.3.4"; } revision "2023-01-29" { @@ -293,16 +293,16 @@ module openconfig-acl { must be specified for each ACL entry"; } - leaf log-action { - type identityref { - base LOG_ACTION; - } - default LOG_NONE; - description - "Specifies the log action and destination for - matched packets. The default is not to log the - packet."; - } + //leaf log-action { + // type identityref { + // base LOG_ACTION; + // } + // default LOG_NONE; + // description + // "Specifies the log action and destination for + // matched packets. The default is not to log the + // packet."; + //} } From a5be467bcdef2cb777cce65b01b548f4f12c69b0 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:19:41 -0700 Subject: [PATCH 224/372] Test comment --- .github/workflows/diff.yaml | 14 ++++++++++++++ release/models/acl/openconfig-acl.yang | 4 ++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 0da972a3e..0c3fe26a6 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -41,3 +41,17 @@ jobs: newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" + + leafchanges=$(models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}") + echo "{leafchanges}={${leafchanges}}" >> "$GITHUB_ENV" + + - name: Post comment listing YANG leaf changes + uses: actions/github-script@v6 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: "${{ env.leafchanges }}" + }) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 03d09c1bb..b8d557367 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.4"; + oc-ext:openconfig-version "2.0.0"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.4"; + reference "2.0.0"; } revision "2023-01-29" { From 419a681f08f122c6955998552fa16e373a2beffa Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:21:13 -0700 Subject: [PATCH 225/372] Test comment --- .github/workflows/diff.yaml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 0c3fe26a6..b5fa5ec6c 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -45,13 +45,13 @@ jobs: leafchanges=$(models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}") echo "{leafchanges}={${leafchanges}}" >> "$GITHUB_ENV" - - name: Post comment listing YANG leaf changes - uses: actions/github-script@v6 - with: - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: "${{ env.leafchanges }}" - }) + - name: Post comment listing YANG leaf changes + uses: actions/github-script@v6 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: "${{ env.leafchanges }}" + }) From 6fbad9795f28f0b84cfe2af78ac1c4460e121842 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:22:37 -0700 Subject: [PATCH 226/372] Test comment --- .github/workflows/diff.yaml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index b5fa5ec6c..2381fdbf7 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -43,15 +43,15 @@ jobs: models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" leafchanges=$(models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}") - echo "{leafchanges}={${leafchanges}}" >> "$GITHUB_ENV" - - - name: Post comment listing YANG leaf changes - uses: actions/github-script@v6 - with: - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: "${{ env.leafchanges }}" - }) + echo "{leafchanges}={${leafchanges}}" >> "$GITHUB_ENV" + + - name: Post comment listing YANG leaf changes + uses: actions/github-script@v6 + with: + script: | + github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: "${{ env.leafchanges }}" + }) From 86559cde48ff4ca02523b9bc9bc91d993f1b2072 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:28:16 -0700 Subject: [PATCH 227/372] Test comment --- .github/workflows/diff.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 2381fdbf7..6d8ca1e69 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -42,8 +42,10 @@ jobs: models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" - leafchanges=$(models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}") - echo "{leafchanges}={${leafchanges}}" >> "$GITHUB_ENV" + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) + echo "leafchanges<<$EOF" >> "$GITHUB_ENV" + models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" + echo "$EOF" >> "$GITHUB_ENV" - name: Post comment listing YANG leaf changes uses: actions/github-script@v6 From bf49e173d819e0209e3cc318647b845d2cb90efd Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:33:09 -0700 Subject: [PATCH 228/372] Test comment --- .github/workflows/diff.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 6d8ca1e69..086ce8d5c 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -55,5 +55,6 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: "${{ env.leafchanges }}" + #body: "${{ env.leafchanges }}" + body: "Just a test" }) From c19d317aef747c4e8c5576b5cf6dd4c750bcfea3 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:34:32 -0700 Subject: [PATCH 229/372] Test comment --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 086ce8d5c..ea6fb1f6f 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -46,6 +46,7 @@ jobs: echo "leafchanges<<$EOF" >> "$GITHUB_ENV" models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" echo "$EOF" >> "$GITHUB_ENV" + #body: "${{ env.leafchanges }}" - name: Post comment listing YANG leaf changes uses: actions/github-script@v6 @@ -55,6 +56,5 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - #body: "${{ env.leafchanges }}" body: "Just a test" }) From 60469ec1dc9a31cf463069369652316f715cc8c0 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 11:58:30 -0700 Subject: [PATCH 230/372] Test comment --- .github/workflows/diff.yaml | 30 +++++++++++++++++--------- release/models/acl/openconfig-acl.yang | 8 +++---- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index ea6fb1f6f..1c822abed 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,9 +22,10 @@ jobs: - name: Install models-ci CLI run: | - go install github.com/openconfig/models-ci@15b19a4 + go install github.com/openconfig/models-ci/openconfig-ci@65fa792 - name: Make sure all backward-incompatible changes are covered by version changes. + id: check run: | readonly HEAD=${{ github.event.pull_request.head.sha }} readonly BASE="$(git merge-base origin/master "${HEAD}")" @@ -42,19 +43,28 @@ jobs: models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" + #echo "-----------List of all YANG node changes-----------" >> "$GITHUB_OUTPUT" + #models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_OUTPUT" EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" echo "$EOF" >> "$GITHUB_ENV" #body: "${{ env.leafchanges }}" - - name: Post comment listing YANG leaf changes - uses: actions/github-script@v6 + - name: Find Comment + uses: peter-evans/find-comment@v2 + id: fc with: - script: | - github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: "Just a test" - }) + issue-number: ${{ github.event.pull_request.number }} + comment-author: 'github-actions[bot]' + body-includes: -----------List of all YANG node changes----------- + + - name: Create or update comment + uses: peter-evans/create-or-update-comment@v3 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + issue-number: ${{ github.event.pull_request.number }} + body: | + -----------List of all YANG node changes----------- + ${{ env.leafchanges }} + edit-mode: replace diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index b8d557367..78a540718 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "1.4.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "2.0.0"; + reference "1.4.3"; } revision "2023-01-29" { @@ -284,9 +284,7 @@ module openconfig-acl { leaf forwarding-action { - type identityref { - base FORWARDING_ACTION; - } + type string; mandatory true; description "Specifies the forwarding action. One forwarding action From 1890815ca004049c6332de96f518ff586b08cb3f Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 12:00:50 -0700 Subject: [PATCH 231/372] Test comment --- .github/workflows/diff.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 1c822abed..b6dcea44a 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -8,6 +8,7 @@ jobs: build: name: Backward Incompatibility Check runs-on: ubuntu-latest + continue-on-error: true steps: - name: Install go @@ -20,7 +21,7 @@ jobs: with: fetch-depth: 0 - - name: Install models-ci CLI + - name: Install openconfig-ci CLI run: | go install github.com/openconfig/models-ci/openconfig-ci@65fa792 @@ -41,13 +42,13 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - models-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" + openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" #echo "-----------List of all YANG node changes-----------" >> "$GITHUB_OUTPUT" - #models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_OUTPUT" + #openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_OUTPUT" EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" - models-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" + openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" echo "$EOF" >> "$GITHUB_ENV" #body: "${{ env.leafchanges }}" From 33f5349a91af973cabaa6d08625e73ea4917b5c8 Mon Sep 17 00:00:00 2001 From: Leon Wang Date: Thu, 3 Aug 2023 12:10:02 -0700 Subject: [PATCH 232/372] Add support for QSFP56 and QSFP56_DD form factor identities (#564) Add QSFP56_DD and QSFP56 form-factor identities --- .../openconfig-transport-types.yang | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index 4eecd6b53..0818d2d35 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,14 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.19.0"; + oc-ext:openconfig-version "0.20.0"; + + revision "2023-08-03" { + description + "Add QSFP56 and QSFP56_DD form factor identities and + deprecated QSFP56_DD_TYPE1 and QSFP56_DD_TYPE2 form factor identities."; + reference "0.20.0"; + } revision "2023-07-24" { description @@ -824,8 +831,25 @@ module openconfig-transport-types { channels"; } + identity QSFP56 { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "QSFP pluggable optic with support for up to 4x56G physical + channels"; + } + + identity QSFP56_DD { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "QSFP-DD electrical interfaces will employ 8 lanes that operate up to + 25 Gbps NRZ modulation or 50 Gbps PAM4 modulation, providing + solutions up to 200 Gbps or 400 Gbps aggregate"; + reference "http://qsfp-dd.com"; + } + identity QSFP56_DD_TYPE1 { base TRANSCEIVER_FORM_FACTOR_TYPE; + status deprecated; description "QSFP DD pluggable optic with support for up to 8x56G physical channels. Type 1 uses eight optical and electrical signals."; @@ -833,6 +857,7 @@ module openconfig-transport-types { identity QSFP56_DD_TYPE2 { base TRANSCEIVER_FORM_FACTOR_TYPE; + status deprecated; description "QSFP DD pluggable optic with support for up to 4x112G physical channels. Type 2 uses four optical and eight electrical @@ -876,7 +901,7 @@ module openconfig-transport-types { identity SFP_DD { base TRANSCEIVER_FORM_FACTOR_TYPE; description - "SFP-DD electrical interfaces will employ 2 lanes that operate up + "SFP-DD electrical interfaces will employ 2 lanes that operate up to 25 Gbps NRZ modulation or 56 Gbps PAM4 modulation, providing solutions up to 50 Gbps or 112 Gbps PAM4 aggregate"; reference "http://sfp-dd.com"; From dcefed0c2d0eb9ac277f7c920a70f94186ae8805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Thu, 3 Aug 2023 21:11:06 +0200 Subject: [PATCH 233/372] Move ethernet segments to top-level container (EVPN) (#768) * Move Ethernet segments to top-level container --- release/models/ethernet-segments/.spec.yml | 6 + .../openconfig-ethernet-segments.yang | 250 ++++++++++++++++++ .../network-instance/openconfig-evpn.yang | 219 +-------------- .../openconfig-network-instance-l2.yang | 9 +- .../openconfig-network-instance.yang | 10 +- 5 files changed, 279 insertions(+), 215 deletions(-) create mode 100644 release/models/ethernet-segments/.spec.yml create mode 100644 release/models/ethernet-segments/openconfig-ethernet-segments.yang diff --git a/release/models/ethernet-segments/.spec.yml b/release/models/ethernet-segments/.spec.yml new file mode 100644 index 000000000..f41f4ff79 --- /dev/null +++ b/release/models/ethernet-segments/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-ethernet-segments + docs: + - yang/ethernet-segments/openconfig-ethernet-segments.yang + build: + - yang/ethernet-segments/openconfig-ethernet-segments.yang + run-ci: true diff --git a/release/models/ethernet-segments/openconfig-ethernet-segments.yang b/release/models/ethernet-segments/openconfig-ethernet-segments.yang new file mode 100644 index 000000000..b09357564 --- /dev/null +++ b/release/models/ethernet-segments/openconfig-ethernet-segments.yang @@ -0,0 +1,250 @@ +module openconfig-ethernet-segments { + + // namespace + namespace "http://openconfig.net/yang/ethernet-segments"; + + prefix "oc-es"; + + + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-evpn-types { prefix oc-evpn-types; } + + // meta + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module contains definitions of ethernet segements. + The ethernet segments are used in EVPN services are + defined for the whole device"; + + oc-ext:openconfig-version "0.1.0"; + + revision "2021-06-28" { + description + "First Version"; + reference "0.1.0"; + } + + +grouping evpn-ethernet-segment-df-config { + description + "Configuration parameters for the Designated forwarding + Election"; + + leaf df-election-method { + type enumeration { + enum DEFAULT { + value 0; + description + "The default Designated Forwarder Election election method"; + } + enum HIGHEST_RANDOM_WEIGHT { + value 1; + description + "The highest random weight (HRW) method"; + reference + "RFC8584: Framework for Ethernet VPN Designated Forwarder + Election Extensibility"; + } + enum PREFERENCE { + value 2; + description + "The preference based method"; + reference + "RFC8584: Framework for Ethernet VPN Designated Forwarder + Election Extensibility"; + } + } + description + "Select the Designated Forwarder Election (DF) election method"; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN. + RFC 8584:Framework for Ethernet VPN Designated Forwarder + Election Extensibility"; + } + + leaf preference { + when "../df-election-method = 'PREFERENCE'" { + description + "The preference value is only applicable + to the preference based method"; + } + type uint16; + description + "Defines a 2-octet value that indicates the PE + preference to become the DF in the Ethernet-Segment."; + reference + "RFC8584: Framework for Ethernet VPN Designated Forwarder + Election Extensibility"; + } + + leaf revertive { + when "../df-election-method = 'PREFERENCE'" { + description + "The revertive value is only applicable + to the preference method"; + } + type boolean; + default true; + description + "The 'preempt' or 'revertive' behavior. This option will allow a + non-revertive behavior in the DF election."; + reference + "RFC8584: Framework for Ethernet VPN Designated Forwarder + Election Extensibility"; + } + + leaf election-wait-time { + when "../df-election-method = 'PREFERENCE'" { + description + "The Designated Forwarder Election wait-time is only applicable + to the preference method"; + } + type uint32; + description + "Designated Forwarder Election wait-time. When the DF timer expires, + the PE device selects the DF based on the highest preference value"; + reference + "RFC8584: Framework for Ethernet VPN Designated Forwarder + Election Extensibility"; + } + } + + grouping evpn-ethernet-segment-df-top { + description + "Top grouping for the configuration and state parameters + for the Designated forwarding Election"; + + container df-election { + description + "Top container for the configuration and state parameters + for the Designated forwarding Election"; + + container config { + description + "Configuration parameters for the Designated forwarding Election"; + + uses evpn-ethernet-segment-df-config; + } + + container state { + description + "Configuration parameters for the Designated forwarding Election"; + config false; + + uses evpn-ethernet-segment-df-config; + } + } + } + + grouping evpn-ethernet-segment-config { + description + "Configuration attributes for the Ethernet + Segment."; + + leaf name { + type string; + description + "Ethernet Segment name"; + } + + leaf esi-type { + type oc-evpn-types:esi-type; + default "TYPE_0_OPERATOR_CONFIGURED"; + description + "ESI Type is a 1-octet field (most significant octet) that + specifies the format of the remaining 9 octets (ESI Value)."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN page-16"; + } + + leaf esi { + type union { + type oc-evpn-types:esi; + type enumeration { + enum AUTO { + description + "This ESI type indicates an auto-generated ESI value."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN"; + } + } + } + description + "Ethernet Segment Identifier (ESI) value. + For ESI Type 0: The esi leaf value is directly configured by the operator. + For ESI Type 1: The AUTO enum must be used. + For ESI Type 2: The AUTO enum must be used. + For ESI Type 3: The directly configured or AUTO enum must be used. + For ESI Type 4: The directly configured or AUTO enum must be used. + For ESI Type 5: The directly configured or AUTO enum must be used."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN."; + } + + leaf redundancy-mode { + type identityref { + base oc-evpn-types:EVPN_REDUNDANCY_MODE; + } + description + "Multihoming options for load balancing of + traffic in the Ethernet Segment."; + reference + "RFC 7432: BGP MPLS-Based Ethernet VPN"; + } + + uses oc-if:interface-ref-common; + } + + grouping evpn-ethernet-segment-top { + description + "Top-level grouping for ethernet segments. An Ethernet Segment + is referenced by a name and an ESI"; + + container ethernet-segments { + description + "Top-level container for ethernet segments. An Ethernet Segment + is referenced by a name and an ESI"; + + list ethernet-segment { + key "name"; + description + "List of Ethernet Segments."; + + leaf name { + type leafref { + path '../config/name'; + } + description + "Ethernet Segment Name "; + } + + container config { + description + "Configuration data for the Ethernet Segments."; + + uses evpn-ethernet-segment-config; + } + + container state { + config false; + description + "Operational state data for the Ethernet Segments."; + + uses evpn-ethernet-segment-config; + } + + uses evpn-ethernet-segment-df-top; + } + } + } + + uses evpn-ethernet-segment-top; + +} \ No newline at end of file diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index a2fbdd7f8..ef61d758e 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,13 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision "2023-07-12" { + description + "Removed ethernet segment"; + reference "0.6.0"; + } revision "2023-03-08" { description @@ -161,218 +167,7 @@ module openconfig-evpn { } } - grouping evpn-ethernet-segment-df-config { - description - "Configuration parameters for the Designated forwarding - Election"; - - leaf df-election-method { - type enumeration { - enum DEFAULT { - value 0; - description - "The default Designated Forwarder Election election method"; - } - enum HIGHEST_RANDOM_WEIGHT { - value 1; - description - "The highest random weight (HRW) method"; - reference - "RFC8584: Framework for Ethernet VPN Designated Forwarder - Election Extensibility"; - } - enum PREFERENCE { - value 2; - description - "The preference based method"; - reference - "RFC8584: Framework for Ethernet VPN Designated Forwarder - Election Extensibility"; - } - } - description - "Select the Designated Forwarder Election (DF) election method"; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN. - RFC 8584:Framework for Ethernet VPN Designated Forwarder - Election Extensibility"; - } - - leaf preference { - when "../df-election-method = 'PREFERENCE'" { - description - "The preference value is only applicable - to the preference based method"; - } - type uint16; - description - "Defines a 2-octet value that indicates the PE - preference to become the DF in the Ethernet-Segment."; - reference - "RFC8584: Framework for Ethernet VPN Designated Forwarder - Election Extensibility"; - } - - leaf revertive { - when "../df-election-method = 'PREFERENCE'" { - description - "The revertive value is only applicable - to the preference method"; - } - type boolean; - default true; - description - "The 'preempt' or 'revertive' behavior. This option will allow a - non-revertive behavior in the DF election."; - reference - "RFC8584: Framework for Ethernet VPN Designated Forwarder - Election Extensibility"; - } - - leaf election-wait-time { - when "../df-election-method = 'PREFERENCE'" { - description - "The Designated Forwarder Election wait-time is only applicable - to the preference method"; - } - type uint32; - description - "Designated Forwarder Election wait-time. When the DF timer expires, - the PE device selects the DF based on the highest preference value"; - reference - "RFC8584: Framework for Ethernet VPN Designated Forwarder - Election Extensibility"; - } - } - - grouping evpn-ethernet-segment-df-top { - description - "Top grouping for the configuration and state parameters - for the Designated forwarding Election"; - - container df-election { - description - "Top container for the configuration and state parameters - for the Designated forwarding Election"; - - container config { - description - "Configuration parameters for the Designated forwarding Election"; - - uses evpn-ethernet-segment-df-config; - } - - container state { - description - "Configuration parameters for the Designated forwarding Election"; - config false; - - uses evpn-ethernet-segment-df-config; - } - } - } - - grouping evpn-ethernet-segment-config { - description - "Configuration attributes for the Ethernet - Segment."; - - leaf name { - type string; - description - "Ethernet Segment name"; - } - - leaf esi-type { - type oc-evpn-types:esi-type; - default "TYPE_0_OPERATOR_CONFIGURED"; - description - "ESI Type is a 1-octet field (most significant octet) that - specifies the format of the remaining 9 octets (ESI Value)."; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN page-16"; - } - - leaf esi { - type union { - type oc-evpn-types:esi; - type enumeration { - enum AUTO { - description - "This ESI type indicates an auto-generated ESI value."; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN"; - } - } - } - description - "Ethernet Segment Identifier (ESI) value. - For ESI Type 0: The esi leaf value is directly configured by the operator. - For ESI Type 1: The AUTO enum must be used. - For ESI Type 2: The AUTO enum must be used. - For ESI Type 3: The directly configured or AUTO enum must be used. - For ESI Type 4: The directly configured or AUTO enum must be used. - For ESI Type 5: The directly configured or AUTO enum must be used."; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN."; - } - - leaf redundancy-mode { - type identityref { - base oc-evpn-types:EVPN_REDUNDANCY_MODE; - } - description - "Multihoming options for load balancing of - traffic in the Ethernet Segment."; - reference - "RFC 7432: BGP MPLS-Based Ethernet VPN"; - } - - uses oc-if:interface-ref-common; - } - - grouping evpn-ethernet-segment-top { - description - "Top-level grouping for ethernet segments. An Ethernet Segment - is referenced by a name and an ESI"; - - container ethernet-segments { - description - "Top-level container for ethernet segments. An Ethernet Segment - is referenced by a name and an ESI"; - - list ethernet-segment { - key "name"; - description - "List of Ethernet Segments."; - - leaf name { - type leafref { - path '../config/name'; - } - description - "Ethernet Segment Name "; - } - - container config { - description - "Configuration data for the Ethernet Segments."; - - uses evpn-ethernet-segment-config; - } - - container state { - config false; - description - "Operational state data for the Ethernet Segments."; - - uses evpn-ethernet-segment-config; - } - uses evpn-ethernet-segment-df-top; - } - } - } /* Groupings related to the Layer 2 forwarding (aka MAC-VRF)*/ diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 3c422d96f..8e805e92a 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.0.3"; + oc-ext:openconfig-version "4.1.0"; + + revision "2023-07-12" { + description + "Moved ethernet-segments to top level + container."; + reference "4.1.0"; + } revision "2023-04-25" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index e1710f31e..418582fe1 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.0.3"; + oc-ext:openconfig-version "4.1.0"; + + revision "2023-07-12" { + description + "Moved ethernet-segments to top-level + container."; + reference "4.1.0"; + } revision "2023-04-25" { description @@ -385,7 +392,6 @@ module openconfig-network-instance { "Configuration of parameters for EVPN related bridge domains (MAC VRFs) and layer3 VRFs (IP VRFs)"; uses oc-evpn:evpn-config-top; - uses oc-evpn:evpn-ethernet-segment-top; } container encapsulation { From 32c1d193f6186cfb7da7ea895601c5a80b03a2c9 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 13:18:29 -0700 Subject: [PATCH 234/372] Test comment --- .github/workflows/diff.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index b6dcea44a..9cb47d546 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -8,7 +8,6 @@ jobs: build: name: Backward Incompatibility Check runs-on: ubuntu-latest - continue-on-error: true steps: - name: Install go @@ -53,6 +52,7 @@ jobs: #body: "${{ env.leafchanges }}" - name: Find Comment + if: always() uses: peter-evans/find-comment@v2 id: fc with: @@ -61,6 +61,7 @@ jobs: body-includes: -----------List of all YANG node changes----------- - name: Create or update comment + if: always() uses: peter-evans/create-or-update-comment@v3 with: comment-id: ${{ steps.fc.outputs.comment-id }} From 00b1b3052aff57ef45ae4762e117693f2bd542d1 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:00:27 -0700 Subject: [PATCH 235/372] Test comment --- .github/workflows/diff.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 9cb47d546..464d03ebb 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@65fa792 + go install github.com/openconfig/models-ci/openconfig-ci@312f8d6 - name: Make sure all backward-incompatible changes are covered by version changes. id: check @@ -68,5 +68,5 @@ jobs: issue-number: ${{ github.event.pull_request.number }} body: | -----------List of all YANG node changes----------- - ${{ env.leafchanges }} + "${{ env.leafchanges }}" edit-mode: replace From d2b47a3e7d82b414e4f7dc42c825a8bd6502465f Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:03:48 -0700 Subject: [PATCH 236/372] Test comment --- .github/workflows/diff.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 464d03ebb..ca7a4f25c 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -48,6 +48,7 @@ jobs: EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" + openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" echo "$EOF" >> "$GITHUB_ENV" #body: "${{ env.leafchanges }}" From 6aac83d4aea019ffd73125510420a70fbf96874c Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:07:16 -0700 Subject: [PATCH 237/372] Test comment --- .github/workflows/diff.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index ca7a4f25c..f9498186f 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -41,17 +41,16 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" - #echo "-----------List of all YANG node changes-----------" >> "$GITHUB_OUTPUT" #openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_OUTPUT" EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" - openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" echo "$EOF" >> "$GITHUB_ENV" #body: "${{ env.leafchanges }}" + openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" + - name: Find Comment if: always() uses: peter-evans/find-comment@v2 From 1cd5a1d61b7a048f1e0930c5a8460f9de8d9438d Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:34:19 -0700 Subject: [PATCH 238/372] Test comment --- .github/workflows/diff.yaml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index f9498186f..ce1c5dd53 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@312f8d6 + go install github.com/openconfig/models-ci/openconfig-ci@742647c - name: Make sure all backward-incompatible changes are covered by version changes. id: check @@ -41,13 +41,10 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - #echo "-----------List of all YANG node changes-----------" >> "$GITHUB_OUTPUT" - #openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_OUTPUT" EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" echo "$EOF" >> "$GITHUB_ENV" - #body: "${{ env.leafchanges }}" openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" @@ -68,5 +65,5 @@ jobs: issue-number: ${{ github.event.pull_request.number }} body: | -----------List of all YANG node changes----------- - "${{ env.leafchanges }}" + ${{ env.leafchanges }} edit-mode: replace From 17f4992ea2225ca90e0dfb7c3a3f435f0500fed5 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:36:48 -0700 Subject: [PATCH 239/372] Test comment --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index ce1c5dd53..871e67e1d 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -43,7 +43,7 @@ jobs: EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" - openconfig-ci diff --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" + openconfig-ci diff --github-comment --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" echo "$EOF" >> "$GITHUB_ENV" openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" From af64f5f33bd7ae84e4d9b4707aee18680e3f8810 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:37:09 -0700 Subject: [PATCH 240/372] Test comment --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 871e67e1d..45a166757 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -64,6 +64,6 @@ jobs: comment-id: ${{ steps.fc.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} body: | - -----------List of all YANG node changes----------- + \#\# -----------List of all YANG node changes----------- ${{ env.leafchanges }} edit-mode: replace From 0472eb2cdb45b73d0b5bd6eab1f35286a44a8d34 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:40:04 -0700 Subject: [PATCH 241/372] Test comment --- .github/workflows/diff.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 45a166757..036205adf 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -41,6 +41,8 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') + echo "yang-changes-title='## List of all YANG node changes'" >> "$GITHUB_ENV" + EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" openconfig-ci diff --github-comment --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" @@ -55,7 +57,7 @@ jobs: with: issue-number: ${{ github.event.pull_request.number }} comment-author: 'github-actions[bot]' - body-includes: -----------List of all YANG node changes----------- + body-includes: ${{ env.yang-changes-title }} - name: Create or update comment if: always() @@ -64,6 +66,6 @@ jobs: comment-id: ${{ steps.fc.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} body: | - \#\# -----------List of all YANG node changes----------- + ${{ env.yang-changes-title }} ${{ env.leafchanges }} edit-mode: replace From aae449738d79d57eef50acdbb12d43c7884201ba Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:41:11 -0700 Subject: [PATCH 242/372] Test comment --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 036205adf..4415fe74f 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -41,7 +41,7 @@ jobs: oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') - echo "yang-changes-title='## List of all YANG node changes'" >> "$GITHUB_ENV" + echo "yang-changes-title=## List of all YANG node changes" >> "$GITHUB_ENV" EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" From dfcca7080c8c43dbdaa0fb40db5f0d95f8141d2f Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 14:47:57 -0700 Subject: [PATCH 243/372] Test comment --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 4415fe74f..ee1d2c030 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@742647c + go install github.com/openconfig/models-ci/openconfig-ci@46f4f97 - name: Make sure all backward-incompatible changes are covered by version changes. id: check From bb5b0ffe338a7cc86d880f33484a77672497d542 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 16:12:29 -0700 Subject: [PATCH 244/372] Test comment --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index ee1d2c030..b0af9ab07 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@46f4f97 + go install github.com/openconfig/models-ci/openconfig-ci@2401790 - name: Make sure all backward-incompatible changes are covered by version changes. id: check From f0b510c033ee9e84ee67f3a714abbc487e540ddb Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 16:50:32 -0700 Subject: [PATCH 245/372] Test comment --- .github/workflows/diff.yaml | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index b0af9ab07..bc7577758 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@2401790 + go install github.com/openconfig/models-ci/openconfig-ci@88da8da - name: Make sure all backward-incompatible changes are covered by version changes. id: check @@ -38,17 +38,15 @@ jobs: git checkout "${HEAD}" oldroot="${BASEREPODIR}" newroot=. - oldfiles=$(find "${oldroot}"/release/models -name '*.yang' | tr '\n' ',') - newfiles=$(find "${newroot}"/release/models -name '*.yang' | tr '\n' ',') echo "yang-changes-title=## List of all YANG node changes" >> "$GITHUB_ENV" EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) echo "leafchanges<<$EOF" >> "$GITHUB_ENV" - openconfig-ci diff --github-comment --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" >> "$GITHUB_ENV" + openconfig-ci diff --github-comment --oldp "${oldroot}/third_party" --oldroot "${oldroot}/release/models" --newp "${newroot}/third_party" --newroot "${newroot}/release/models" >> "$GITHUB_ENV" echo "$EOF" >> "$GITHUB_ENV" - openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldfiles "${oldfiles}" --newp "${newroot}/third_party" --newfiles "${newfiles}" + openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldroot "${oldroot}/release/models" --newp "${newroot}/third_party" --newroot "${newroot}/release/models" - name: Find Comment if: always() From 00edd231bbea239e0e64df2fb9fa4020a0120d51 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 16:54:26 -0700 Subject: [PATCH 246/372] Test comment --- release/models/acl/openconfig-acl.yang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 78a540718..79bca7c46 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -284,7 +284,7 @@ module openconfig-acl { leaf forwarding-action { - type string; + type binary; mandatory true; description "Specifies the forwarding action. One forwarding action From eeed78169aaa14248192588bbc9406a958540a79 Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 16:57:06 -0700 Subject: [PATCH 247/372] Now revert all model changes --- release/models/acl/openconfig-acl.yang | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 79bca7c46..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.4.3"; + oc-ext:openconfig-version "1.3.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.4.3"; + reference "1.3.3"; } revision "2023-01-29" { @@ -284,23 +284,25 @@ module openconfig-acl { leaf forwarding-action { - type binary; + type identityref { + base FORWARDING_ACTION; + } mandatory true; description "Specifies the forwarding action. One forwarding action must be specified for each ACL entry"; } - //leaf log-action { - // type identityref { - // base LOG_ACTION; - // } - // default LOG_NONE; - // description - // "Specifies the log action and destination for - // matched packets. The default is not to log the - // packet."; - //} + leaf log-action { + type identityref { + base LOG_ACTION; + } + default LOG_NONE; + description + "Specifies the log action and destination for + matched packets. The default is not to log the + packet."; + } } From 01c13d8d8d825cca757bf857de3ed8c6e53a759b Mon Sep 17 00:00:00 2001 From: wenovus Date: Thu, 3 Aug 2023 17:06:52 -0700 Subject: [PATCH 248/372] Now revert all model changes --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index bc7577758..a5a34d0e4 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@88da8da + go install github.com/openconfig/models-ci/openconfig-ci@5ef41fc - name: Make sure all backward-incompatible changes are covered by version changes. id: check From c87676035b901f584a610b690d2205b082dda512 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 09:36:22 -0700 Subject: [PATCH 249/372] test --- .github/workflows/diff.yaml | 2 +- cloudbuild.yaml | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index a5a34d0e4..805bcc93f 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@5ef41fc + go install github.com/openconfig/models-ci/openconfig-ci@c880ed2 - name: Make sure all backward-incompatible changes are covered by version changes. id: check diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 8e0eb834c..4cece6fd6 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -53,7 +53,7 @@ steps: cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. #branch=$(git tag -l 'v10.*' | sort -V | tail -1) - branch=fail-at-generator-pull + branch=c880ed2 git checkout $branch volumes: - name: 'ssh' @@ -110,7 +110,8 @@ steps: git clone git@github.com:openconfig/pattern-regex-tests.git /go/src/github.com/openconfig/pattern-regex-tests cd /go/src/github.com/openconfig/pattern-regex-tests # Modify the major version to update regexp version. - branch=$(git tag -l 'v2.0*' | sort -V | tail -1) + #branch=$(git tag -l 'v2.0*' | sort -V | tail -1) + branch=use-common-workflow git checkout $branch volumes: - name: 'ssh' From 4f9f55486f3f0fb2d97a0242c073c1a19882a8a8 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 09:55:42 -0700 Subject: [PATCH 250/372] prep for submission --- cloudbuild.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 4cece6fd6..0fac691b2 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,7 +52,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - #branch=$(git tag -l 'v10.*' | sort -V | tail -1) + branch=$(git tag -l 'v11.*' | sort -V | tail -1) branch=c880ed2 git checkout $branch volumes: @@ -110,8 +110,7 @@ steps: git clone git@github.com:openconfig/pattern-regex-tests.git /go/src/github.com/openconfig/pattern-regex-tests cd /go/src/github.com/openconfig/pattern-regex-tests # Modify the major version to update regexp version. - #branch=$(git tag -l 'v2.0*' | sort -V | tail -1) - branch=use-common-workflow + branch=$(git tag -l 'v2.0*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' From 61a372b85fa5943c7a5a50e1e407a19515086ed8 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 10:00:10 -0700 Subject: [PATCH 251/372] double check --- .github/workflows/diff.yaml | 27 ------------------------- release/models/acl/openconfig-acl.yang | 28 ++++++++++++-------------- 2 files changed, 13 insertions(+), 42 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 805bcc93f..526c42c45 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -39,31 +39,4 @@ jobs: oldroot="${BASEREPODIR}" newroot=. - echo "yang-changes-title=## List of all YANG node changes" >> "$GITHUB_ENV" - - EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64) - echo "leafchanges<<$EOF" >> "$GITHUB_ENV" - openconfig-ci diff --github-comment --oldp "${oldroot}/third_party" --oldroot "${oldroot}/release/models" --newp "${newroot}/third_party" --newroot "${newroot}/release/models" >> "$GITHUB_ENV" - echo "$EOF" >> "$GITHUB_ENV" - openconfig-ci diff --disallowed-incompats --oldp "${oldroot}/third_party" --oldroot "${oldroot}/release/models" --newp "${newroot}/third_party" --newroot "${newroot}/release/models" - - - name: Find Comment - if: always() - uses: peter-evans/find-comment@v2 - id: fc - with: - issue-number: ${{ github.event.pull_request.number }} - comment-author: 'github-actions[bot]' - body-includes: ${{ env.yang-changes-title }} - - - name: Create or update comment - if: always() - uses: peter-evans/create-or-update-comment@v3 - with: - comment-id: ${{ steps.fc.outputs.comment-id }} - issue-number: ${{ github.event.pull_request.number }} - body: | - ${{ env.yang-changes-title }} - ${{ env.leafchanges }} - edit-mode: replace diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 6b3977907..79bca7c46 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.3"; + oc-ext:openconfig-version "1.4.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.3"; + reference "1.4.3"; } revision "2023-01-29" { @@ -284,25 +284,23 @@ module openconfig-acl { leaf forwarding-action { - type identityref { - base FORWARDING_ACTION; - } + type binary; mandatory true; description "Specifies the forwarding action. One forwarding action must be specified for each ACL entry"; } - leaf log-action { - type identityref { - base LOG_ACTION; - } - default LOG_NONE; - description - "Specifies the log action and destination for - matched packets. The default is not to log the - packet."; - } + //leaf log-action { + // type identityref { + // base LOG_ACTION; + // } + // default LOG_NONE; + // description + // "Specifies the log action and destination for + // matched packets. The default is not to log the + // packet."; + //} } From 54162d23682773d401ec2bfff1553ab47b3a441a Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 10:00:33 -0700 Subject: [PATCH 252/372] revert YANG changes --- release/models/acl/openconfig-acl.yang | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 79bca7c46..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.4.3"; + oc-ext:openconfig-version "1.3.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.4.3"; + reference "1.3.3"; } revision "2023-01-29" { @@ -284,23 +284,25 @@ module openconfig-acl { leaf forwarding-action { - type binary; + type identityref { + base FORWARDING_ACTION; + } mandatory true; description "Specifies the forwarding action. One forwarding action must be specified for each ACL entry"; } - //leaf log-action { - // type identityref { - // base LOG_ACTION; - // } - // default LOG_NONE; - // description - // "Specifies the log action and destination for - // matched packets. The default is not to log the - // packet."; - //} + leaf log-action { + type identityref { + base LOG_ACTION; + } + default LOG_NONE; + description + "Specifies the log action and destination for + matched packets. The default is not to log the + packet."; + } } From 82f67d4e50bb83bf24c99b08caf2974134d88d90 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 11:08:37 -0700 Subject: [PATCH 253/372] double check error msg --- cloudbuild.yaml | 1 - release/models/acl/openconfig-acl.yang | 28 ++++++++++++-------------- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 0fac691b2..f746bf7c0 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -53,7 +53,6 @@ steps: cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. branch=$(git tag -l 'v11.*' | sort -V | tail -1) - branch=c880ed2 git checkout $branch volumes: - name: 'ssh' diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 6b3977907..79bca7c46 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.3.3"; + oc-ext:openconfig-version "1.4.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.3.3"; + reference "1.4.3"; } revision "2023-01-29" { @@ -284,25 +284,23 @@ module openconfig-acl { leaf forwarding-action { - type identityref { - base FORWARDING_ACTION; - } + type binary; mandatory true; description "Specifies the forwarding action. One forwarding action must be specified for each ACL entry"; } - leaf log-action { - type identityref { - base LOG_ACTION; - } - default LOG_NONE; - description - "Specifies the log action and destination for - matched packets. The default is not to log the - packet."; - } + //leaf log-action { + // type identityref { + // base LOG_ACTION; + // } + // default LOG_NONE; + // description + // "Specifies the log action and destination for + // matched packets. The default is not to log the + // packet."; + //} } From 666537ab7083bd302829d7139ae60b8d93906654 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 11:38:52 -0700 Subject: [PATCH 254/372] Try fixing ygot --- cloudbuild.yaml | 1 + release/models/acl/openconfig-acl.yang | 28 ++++++++++++++------------ 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index f746bf7c0..ee73030ca 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -53,6 +53,7 @@ steps: cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. branch=$(git tag -l 'v11.*' | sort -V | tail -1) + branch=fix-ygot git checkout $branch volumes: - name: 'ssh' diff --git a/release/models/acl/openconfig-acl.yang b/release/models/acl/openconfig-acl.yang index 79bca7c46..6b3977907 100644 --- a/release/models/acl/openconfig-acl.yang +++ b/release/models/acl/openconfig-acl.yang @@ -34,12 +34,12 @@ module openconfig-acl { packets should be handled. Entries have a type that indicates the type of match criteria, e.g., MAC layer, IPv4, IPv6, etc."; - oc-ext:openconfig-version "1.4.3"; + oc-ext:openconfig-version "1.3.3"; revision "2023-02-06" { description "Add clarifying comments on use of interface-ref."; - reference "1.4.3"; + reference "1.3.3"; } revision "2023-01-29" { @@ -284,23 +284,25 @@ module openconfig-acl { leaf forwarding-action { - type binary; + type identityref { + base FORWARDING_ACTION; + } mandatory true; description "Specifies the forwarding action. One forwarding action must be specified for each ACL entry"; } - //leaf log-action { - // type identityref { - // base LOG_ACTION; - // } - // default LOG_NONE; - // description - // "Specifies the log action and destination for - // matched packets. The default is not to log the - // packet."; - //} + leaf log-action { + type identityref { + base LOG_ACTION; + } + default LOG_NONE; + description + "Specifies the log action and destination for + matched packets. The default is not to log the + packet."; + } } From b7e1fad95db22bfd27753736dbddc6868dac9200 Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 12:29:39 -0700 Subject: [PATCH 255/372] should work now --- cloudbuild.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index ee73030ca..f746bf7c0 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -53,7 +53,6 @@ steps: cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. branch=$(git tag -l 'v11.*' | sort -V | tail -1) - branch=fix-ygot git checkout $branch volumes: - name: 'ssh' From 76383aa318eff6b549c8f35fd015f3b87c01bd6f Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 12:43:08 -0700 Subject: [PATCH 256/372] Improve Actions job name --- .github/workflows/diff.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 526c42c45..53eefac0d 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -1,4 +1,4 @@ -name: OpenConfig YANG Diff +name: Breaking Changes on: pull_request: @@ -6,7 +6,7 @@ on: jobs: build: - name: Backward Incompatibility Check + name: major version update check runs-on: ubuntu-latest steps: From 098e81c78e1e104ef132449aba550d4e786817af Mon Sep 17 00:00:00 2001 From: wenovus Date: Tue, 8 Aug 2023 12:53:07 -0700 Subject: [PATCH 257/372] Use latest version of Go during go setup --- .github/workflows/diff.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 53eefac0d..0a39c6487 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -11,9 +11,9 @@ jobs: steps: - name: Install go - uses: actions/setup-go@v2 + uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.x' - name: Check out code uses: actions/checkout@v3 From ab27fae8cebdd3f181ef815edcc49c4ad46bb3fa Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 8 Aug 2023 14:21:03 -0700 Subject: [PATCH 258/372] Clarify CAK counters (#937) Resolves #683 --- release/models/macsec/openconfig-macsec.yang | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/release/models/macsec/openconfig-macsec.yang b/release/models/macsec/openconfig-macsec.yang index 5554f695f..2b2d4e51e 100644 --- a/release/models/macsec/openconfig-macsec.yang +++ b/release/models/macsec/openconfig-macsec.yang @@ -18,12 +18,18 @@ module openconfig-macsec { "This module defines configuration and state data for MACsec IEEE Std 802.1AE-2018."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.1.1"; oc-ext:regexp-posix; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; - revision "2023-06-08" { + revision "2023-08-03" { + description + "Clarify in-cak and out-cak leaf descriptions."; + reference "1.1.1"; + } + +revision "2023-06-08" { description "Support rx-late-pkts leaf."; reference "1.1.0"; @@ -190,7 +196,9 @@ module openconfig-macsec { leaf in-cak-mkpdu { type oc-yang:counter64; description - "Validated MKPDU received CAK count"; + "Count of validated MKPDU connectivity association key (CAK) pdus + received. This counter is related to the group-cak feature in the + 802.1X-2010 standard."; } leaf out-mkpdu { @@ -208,7 +216,9 @@ module openconfig-macsec { leaf out-cak-mkpdu { type oc-yang:counter64; description - "MKPDU CAK sent count"; + "Count of MKPDU connectivity association key (CAK) pdu's sent. + This counter is related to the group-cak feature in the + 802.1X-2010 standard."; } } From face342aaf2f65988b1bbd21a08faee72ec0d736 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 11 Aug 2023 14:30:46 -0700 Subject: [PATCH 259/372] multicast counters to subinterface, remove physical counters from subinterface (#934) * add multicast to ip if, remove physical counters from subinterface * add in deprecated leaves to subif for backwards compat * trim whitespace * add if common submodule * update spec.yml * use common grouping for if counters * cleanup * bump versions * bump versions * merge submodule to openconfig-interfaces * revert oc-if-ip counters * revert oc-if-ip counters * add counter container to wifi ap if model * update wifi version, fix indent --- .../interfaces/openconfig-interfaces.yang | 631 ++++++++++-------- .../models/wifi/openconfig-ap-interfaces.yang | 19 +- 2 files changed, 382 insertions(+), 268 deletions(-) diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index 7d349a07c..9589c2cb2 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,9 +51,16 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.0.2"; + oc-ext:openconfig-version "3.5.0"; -revision "2023-02-06" { + revision "2023-07-14" { + description + "Move counters which apply to both interfaces and subinterfaces to + a common grouping. Deprecate physical counters from subinterface"; + reference "3.5.0"; + } + + revision "2023-02-06" { description "Add further specification to interface-ref type to clarify that the interface and subinterface leaves @@ -637,298 +644,374 @@ revision "2023-02-06" { } } - - grouping interface-counters-state { + grouping interface-common-counters-state { description - "Operational state representing interface counters - and statistics."; + "Operational state representing interface counters and statistics + applicable to (physical) interfaces and (logical) subinterfaces."; - //TODO: we may need to break this list of counters into those - //that would appear for physical vs. subinterface or logical - //interfaces. For now, just replicating the full stats - //grouping to both interface and subinterface. + leaf in-octets { + type oc-yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. - oc-ext:operational; + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - container counters { + leaf in-pkts { + type oc-yang:counter64; description - "A collection of interface-related statistics objects."; + "The total number of packets received on the interface, + including all unicast, multicast, broadcast and bad packets + etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information Base. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-octets { - type oc-yang:counter64; - description - "The total number of octets received on the interface, - including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; - } + leaf in-unicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-pkts { - type oc-yang:counter64; - description - "The total number of packets received on the interface, - including all unicast, multicast, broadcast and bad packets - etc."; - reference - "RFC 2819: Remote Network Monitoring Management Information - Base"; - } + leaf in-broadcast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInBroadcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-unicast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were not addressed to a - multicast or broadcast address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; - } + leaf in-multicast-pkts { + type oc-yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInMulticastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-broadcast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a broadcast - address at this sub-layer. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInBroadcastPkts"; - } + leaf in-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-multicast-pkts { - type oc-yang:counter64; - description - "The number of packets, delivered by this sub-layer to a - higher (sub-)layer, that were addressed to a multicast - address at this sub-layer. For a MAC-layer protocol, - this includes both Group and Functional addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCInMulticastPkts"; - } + leaf in-discards { + type oc-yang:counter64; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. - leaf in-discards { - type oc-yang:counter64; - description - "The number of inbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being deliverable to a higher-layer - protocol. One possible reason for discarding such a - packet could be to free up buffer space. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - reference - "RFC 2863: The Interfaces Group MIB - ifInDiscards"; - } + leaf out-octets { + type oc-yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. - leaf in-errors { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of inbound - packets that contained errors preventing them from being - deliverable to a higher-layer protocol. For character- - oriented or fixed-length interfaces, the number of - inbound transmission units that contained errors - preventing them from being deliverable to a higher-layer - protocol. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInErrors"; - } + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-unknown-protos { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of packets - received via the interface that were discarded because - of an unknown or unsupported protocol. For - character-oriented or fixed-length interfaces that - support protocol multiplexing, the number of - transmission units received via the interface that were - discarded because of an unknown or unsupported protocol. - For any interface that does not support protocol - multiplexing, this counter is not present. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; - } + leaf out-pkts { + type oc-yang:counter64; + description + "The total number of packets transmitted out of the + interface, including all unicast, multicast, broadcast, + and bad packets etc."; + reference + "RFC 2819: Remote Network Monitoring Management Information Base. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf in-fcs-errors { - type oc-yang:counter64; - description - "Number of received packets which had errors in the - frame check sequence (FCS), i.e., framing errors. + leaf out-unicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - Discontinuities in the value of this counter can occur - when the device is re-initialization as indicated by the - value of 'last-clear'."; - } + leaf out-broadcast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutBroadcastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-octets { - type oc-yang:counter64; - description - "The total number of octets transmitted out of the - interface, including framing characters. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; - } + leaf out-multicast-pkts { + type oc-yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutMulticastPkts. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-pkts { - type oc-yang:counter64; - description - "The total number of packets transmitted out of the - interface, including all unicast, multicast, broadcast, - and bad packets etc."; - reference - "RFC 2819: Remote Network Monitoring Management Information - Base"; - } + leaf out-discards { + type oc-yang:counter64; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-unicast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were not addressed - to a multicast or broadcast address at this sub-layer, - including those that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; - } + leaf out-errors { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors. + RFC 4293: Management Information Base for the + Internet Protocol (IP)."; + } - leaf out-broadcast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - broadcast address at this sub-layer, including those - that were discarded or not sent. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutBroadcastPkts"; - } + leaf last-clear { + type oc-types:timeticks64; + description + "Timestamp of the last time the interface counters were + cleared. + The value is the timestamp in nanoseconds relative to + the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; + oc-ext:telemetry-on-change; + } + } - leaf out-multicast-pkts { - type oc-yang:counter64; - description - "The total number of packets that higher-level protocols - requested be transmitted, and that were addressed to a - multicast address at this sub-layer, including those - that were discarded or not sent. For a MAC-layer - protocol, this includes both Group and Functional - addresses. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - - ifHCOutMulticastPkts"; - } + grouping interface-counters-state { + description + "Operational state representing interface counters + and statistics."; - leaf out-discards { - type oc-yang:counter64; - description - "The number of outbound packets that were chosen to be - discarded even though no errors had been detected to - prevent their being transmitted. One possible reason - for discarding such a packet could be to free up buffer - space. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; - } + oc-ext:operational; - leaf out-errors { - type oc-yang:counter64; - description - "For packet-oriented interfaces, the number of outbound - packets that could not be transmitted because of errors. - For character-oriented or fixed-length interfaces, the - number of outbound transmission units that could not be - transmitted because of errors. - - Discontinuities in the value of this counter can occur - at re-initialization of the management system, and at - other times as indicated by the value of - 'last-clear'."; - reference - "RFC 2863: The Interfaces Group MIB - ifOutErrors"; - } + leaf in-unknown-protos { + type oc-yang:counter64; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } - leaf carrier-transitions { - type oc-yang:counter64; - description - "Number of times the interface state has transitioned - between up and down since the time the device restarted - or the last-clear time, whichever is most recent."; - oc-ext:telemetry-on-change; - } + leaf in-fcs-errors { + type oc-yang:counter64; + description + "Number of received packets which had errors in the + frame check sequence (FCS), i.e., framing errors. - leaf last-clear { - type oc-types:timeticks64; - description - "Timestamp of the last time the interface counters were - cleared. + Discontinuities in the value of this counter can occur + when the device is re-initialization as indicated by the + value of 'last-clear'."; + } - The value is the timestamp in nanoseconds relative to - the Unix Epoch (Jan 1, 1970 00:00:00 UTC)."; - oc-ext:telemetry-on-change; - } + leaf carrier-transitions { + type oc-yang:counter64; + description + "Number of times the interface state has transitioned + between up and down since the time the device restarted + or the last-clear time, whichever is most recent."; + oc-ext:telemetry-on-change; + } + + leaf resets { + type oc-yang:counter64; + description + "Number of times the interface hardware has been reset. The + triggers and effects of this event are hardware-specifc."; + oc-ext:telemetry-on-change; + + } + } + + grouping subinterfaces-counters-state { + description + "Operational state representing counters unique to subinterfaces"; + + oc-ext:operational; + leaf in-unknown-protos { + type oc-yang:counter64; + status deprecated; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf in-fcs-errors { + type oc-yang:counter64; + status deprecated; + description + "Number of received packets which had errors in the + frame check sequence (FCS), i.e., framing errors. + + Discontinuities in the value of this counter can occur + when the device is re-initialization as indicated by the + value of 'last-clear'."; + } + + leaf carrier-transitions { + type oc-yang:counter64; + status deprecated; + description + "Number of times the interface state has transitioned + between up and down since the time the device restarted + or the last-clear time, whichever is most recent."; + oc-ext:telemetry-on-change; } + } // data definition statements @@ -1020,7 +1103,15 @@ revision "2023-02-06" { } uses interface-common-state; - uses interface-counters-state; + + container counters { + description + "A collection of interface specific statistics entitites which are + not common to subinterfaces."; + + uses interface-common-counters-state; + uses subinterfaces-counters-state; + } } grouping subinterfaces-top { @@ -1119,7 +1210,15 @@ revision "2023-02-06" { uses interface-phys-config; uses interface-common-state; - uses interface-counters-state; + + container counters { + description + "A collection of interface specific statistics entitites which are + not common to subinterfaces."; + + uses interface-common-counters-state; + uses interface-counters-state; + } } uses interface-phys-holdtime-top; diff --git a/release/models/wifi/openconfig-ap-interfaces.yang b/release/models/wifi/openconfig-ap-interfaces.yang index 913520165..49f7f0a00 100644 --- a/release/models/wifi/openconfig-ap-interfaces.yang +++ b/release/models/wifi/openconfig-ap-interfaces.yang @@ -32,7 +32,14 @@ module openconfig-ap-interfaces { "This module defines the configuration and state data for non-radio interfaces on WiFi Access Points."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "1.3.0"; + + revision "2023-08-10" { + description + "Add container to make compatible with changes in + openconfig-interfaces"; + reference "1.3.0"; + } revision "2023-06-26" { description @@ -105,7 +112,15 @@ module openconfig-ap-interfaces { uses oc-if:interface-phys-config; uses oc-if:interface-common-state; - uses oc-if:interface-counters-state; + + container counters { + description + "A collection of interface specific statistics entitites which are + not common to subinterfaces."; + + uses oc-if:interface-common-counters-state; + uses oc-if:interface-counters-state; + } } } } From 5ef541dd3d468239f07d69fb05a4dbc9e3f7476b Mon Sep 17 00:00:00 2001 From: Roland Phung <414053+rolandphung@users.noreply.github.com> Date: Tue, 22 Aug 2023 09:23:21 -0700 Subject: [PATCH 260/372] Update string type keys to use interface-id type (#938) For the sake of consistency, certain keys were supposed to be oc-if:interface-id type --- release/models/bfd/openconfig-bfd.yang | 10 ++++++++-- .../openconfig-network-instance-l2.yang | 8 +++++++- .../network-instance/openconfig-network-instance.yang | 10 ++++++++-- .../models/ospf/openconfig-ospfv2-area-interface.yang | 10 ++++++++-- release/models/ospf/openconfig-ospfv2-area.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-common.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-global.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-lsdb.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2.yang | 8 +++++++- .../segment-routing/openconfig-segment-routing.yang | 10 ++++++++-- 10 files changed, 74 insertions(+), 14 deletions(-) diff --git a/release/models/bfd/openconfig-bfd.yang b/release/models/bfd/openconfig-bfd.yang index 400d7ab00..481021d33 100644 --- a/release/models/bfd/openconfig-bfd.yang +++ b/release/models/bfd/openconfig-bfd.yang @@ -26,7 +26,13 @@ module openconfig-bfd { "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) configuration and operational state."; - oc-ext:openconfig-version "0.2.5"; + oc-ext:openconfig-version "0.2.6"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.2.6"; + } revision "2023-02-06" { description @@ -194,7 +200,7 @@ module openconfig-bfd { "Top-level per-interface configuration parameters for BFD."; leaf id { - type string; + type oc-if:interface-id; description "A unique identifier for the interface."; } diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 8e805e92a..b9f4ede2f 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.1.0"; + oc-ext:openconfig-version "4.1.1"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "4.1.1"; + } revision "2023-07-12" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 418582fe1..8f104d175 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.1.0"; + oc-ext:openconfig-version "4.1.1"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "4.1.1"; + } revision "2023-07-12" { description @@ -1097,7 +1103,7 @@ module openconfig-network-instance { with the network instance"; leaf id { - type string; + type oc-if:interface-id; description "A unique identifier for this interface - this is expressed as a free-text string"; diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 52d560bad..60a1293d1 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description @@ -110,7 +116,7 @@ submodule openconfig-ospfv2-area-interface { "Configuration parameters for an OSPF interface"; leaf id { - type string; + type oc-if:interface-id; description "An operator-specified string utilised to uniquely reference this interface"; diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index 1cc2a9520..fa7fa0660 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index d5c2fd945..460729a87 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 832bf1103..2b7cc47b9 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 5a39769fb..a3c493abd 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index f75a207bd..d43a4fd01 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.4.2"; + oc-ext:openconfig-version "0.4.3"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description diff --git a/release/models/segment-routing/openconfig-segment-routing.yang b/release/models/segment-routing/openconfig-segment-routing.yang index b88ffb3b7..a687f0bfb 100644 --- a/release/models/segment-routing/openconfig-segment-routing.yang +++ b/release/models/segment-routing/openconfig-segment-routing.yang @@ -36,7 +36,13 @@ module openconfig-segment-routing { - SR SID advertisements - instantiated within the relevant IGP. - SR-specific counters - instantied within the relevant dataplane."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.4.1"; + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "0.4.1"; + } revision "2023-05-24" { description @@ -449,7 +455,7 @@ module openconfig-segment-routing { "MPLS-specific Segment Routing configuration for an interface"; leaf interface-id { - type string; + type oc-if:interface-id; description "A unique identifier for the interface."; } From 0cf5581646df1f26c5e8f9eabb22648ec7cbdb72 Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Wed, 23 Aug 2023 16:47:38 -0700 Subject: [PATCH 261/372] Temporal qos buffer size definition (#928) Adding buffer management leafs for minimum buffer allocation and maximum static shared buffer alocatione expressed in microseconds Co-authored-by: Darren Loher --- .../models/qos/openconfig-qos-elements.yang | 9 +++- .../models/qos/openconfig-qos-interfaces.yang | 17 ++++++-- .../models/qos/openconfig-qos-mem-mgmt.yang | 41 +++++++++++++++++-- release/models/qos/openconfig-qos.yang | 9 +++- 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index e679f6fe6..5c87eb5b4 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,14 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.9.1"; + oc-ext:openconfig-version "0.10.0"; + + revision "2023-07-26" { + description + "Add buffer management parameters in time unts (microseconds). + Make profiles reusable across LAGs and PHY of different speed"; + reference "0.10.0"; + } revision "2023-04-25" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index eca7a5e21..1f11cfda6 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,14 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.9.1"; + oc-ext:openconfig-version "0.10.0"; + + revision "2023-07-26" { + description + "Add buffer management parameters in time unts (microseconds). + Make profiles reusable across LAGs and PHY of different speed"; + reference "0.10.0"; + } revision "2023-04-25" { description @@ -362,13 +369,17 @@ submodule openconfig-qos-interfaces { leaf dropped-pkts { type oc-yang:counter64; description - "Number of packets dropped by the queue due to overrun"; + "Number of packets dropped by the queue due to overrun, that is tail-drop + or AMQ (RED, WRED, etc) induced drops as indicated by the attached + queue-management-profile"; } leaf dropped-octets { type oc-yang:counter64; description - "Number of octets dropped by the queue due to overrun"; + "Number of octets dropped by the queue due to overrun, that is tail-drop + or AMQ (RED, WRED, etc) induced drops as indicated by the attached + queue-management-profile"; } } diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index ef7b324f6..13479ee88 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,14 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.9.1"; + oc-ext:openconfig-version "0.10.0"; + + revision "2023-07-26" { + description + "Add buffer management parameters in time unts (microseconds). + Make profiles reusable across LAGs and PHY of different speed"; + reference "0.10.0"; + } revision "2023-04-25" { description @@ -221,7 +228,20 @@ submodule openconfig-qos-mem-mgmt { units bytes; description "This is the dedicated buffer that is carved for the queue, this is the minimum - number of bytes reserved for this queue."; + number of bytes reserved for this queue. + This leaf is mutualy exclusive with dedicated-buffer-temporal leaf"; + } + + leaf dedicated-buffer-temporal { + type uint64; + units microseconds; + description + "This is the dedicated buffer that is carved for the queue. The the minimum + number of bytes reserved for this queue is calculated by multiplying by interface speed + queue is attached to and queues minimum, guarantaed transmit share (derived + form WRR schedulers weights). + This leaf shouldbot be used for strict priority scheduled queues. + This leaf is mutualy exclusive with dedicated-buffer leaf"; } leaf use-shared-buffer { @@ -246,7 +266,22 @@ submodule openconfig-qos-mem-mgmt { description "If the shared-buffer-limit-type is STATIC, then static-shared-buffer-limit is the maximum number of bytes that the queue is allowed to use from the shared - pool."; + pool. + This leaf is mutualy exclusive with static-shared-buffer-limit-temporal leaf."; + } + + leaf static-shared-buffer-limit-temporal { + type uint32; + units microseconds; + description + "If the shared-buffer-limit-type is STATIC, then static-shared-buffer-limit-temporal is + the maximum number of bytes that the queue is allowed to use from the shared + pool. + The the number of bytes is calculated by multiplying static-shared-buffer-limit-temporal + by interface speed the queue is attached to and queues minimum, guarantaed transmit share + (derived form WRR schedulers weights). + This leaf shouldbot be used for strict priority scheduled queues. + This leaf is mutualy exclusive with static-shared-buffer-limit leaf."; } leaf dynamic-limit-scaling-factor { diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index a01610cfe..62302d706 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,14 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.9.1"; + oc-ext:openconfig-version "0.10.0"; + + revision "2023-07-26" { + description + "Add buffer management parameters in time unts (microseconds). + Make profiles reusable across LAGs and PHY of different speed"; + reference "0.10.0"; + } revision "2023-04-25" { description From b75925aff7416a8bca1b02d0b5e9a4a64fbc09da Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 25 Aug 2023 18:08:32 -0700 Subject: [PATCH 262/372] Add OSPF summary-lsa metric (#916) * add summary-lsa/state/metric --- .../ospf/openconfig-ospfv2-area-interface.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-area.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-common.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-global.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-lsdb.yang | 14 +++++++++++++- release/models/ospf/openconfig-ospfv2.yang | 8 +++++++- t.txt | 0 7 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 t.txt diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 60a1293d1..92cfdd7f9 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.3"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-08-25" { + description + "Add leaf metric to lsdb-summary-lsa-state."; + reference "0.5.0"; + } revision "2023-08-09" { description diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index fa7fa0660..1ff82db2b 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.4.3"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-08-25" { + description + "Add leaf metric to lsdb-summary-lsa-state."; + reference "0.5.0"; +} revision "2023-08-09" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index 460729a87..8a90fcc58 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.4.3"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-08-25" { + description + "Add leaf metric to lsdb-summary-lsa-state."; + reference "0.5.0"; +} revision "2023-08-09" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 2b7cc47b9..73007d05e 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.4.3"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-08-25" { + description + "Add leaf metric to lsdb-summary-lsa-state."; + reference "0.5.0"; +} revision "2023-08-09" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index a3c493abd..35599a961 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,8 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.4.3"; + oc-ext:openconfig-version "0.5.0"; + revision "2023-08-25" { + description + "Add leaf metric to lsdb-summary-lsa-state."; + reference "0.5.0"; +} revision "2023-08-09" { description "Update interface key to use interface-id type"; @@ -1218,6 +1223,13 @@ submodule openconfig-ospfv2-lsdb { "The mask of the network described by the Summary LSA represented as a CIDR mask."; } + + leaf metric { + type oc-ospf-types:ospf-metric; + description + "The cost of utilising the summary link specified independent of TOS."; + } + } grouping ospfv2-lsdb-asexternal-lsa-common-parameters { diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index d43a4fd01..bce9391ac 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.4.3"; + oc-ext:openconfig-version "0.5.0"; + + revision "2023-08-25" { + description + "Add leaf metric to lsdb-summary-lsa-state."; + reference "0.5.0"; +} revision "2023-08-09" { description diff --git a/t.txt b/t.txt new file mode 100644 index 000000000..e69de29bb From f48bae357903afc41e49123746f2c0536f6d0254 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 25 Aug 2023 18:10:42 -0700 Subject: [PATCH 263/372] Delete t.txt Delete unintential file --- t.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 t.txt diff --git a/t.txt b/t.txt deleted file mode 100644 index e69de29bb..000000000 From b6bff9d192c7a1cf396c157c0b4918d17530a15f Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 30 Aug 2023 11:49:04 -0700 Subject: [PATCH 264/372] add mcast counters ipv4,6 (#941) --- .../models/interfaces/openconfig-if-ip.yang | 61 ++++++++++++++++++- 1 file changed, 59 insertions(+), 2 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 498a90bec..6ab1ddc24 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,9 +44,15 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; - revision "2023-06-30" { + revision "2023-08-14" { + description + "Add multicast counters for IPv4, IPv6."; + reference "3.5.0"; + } + +revision "2023-06-30" { description "Deprecate IPv6 router advertisment config suppress leaf and add config mode leaf."; @@ -252,6 +258,31 @@ module openconfig-if-ip { Internet Protocol (IP)"; } + leaf in-multicast-pkts { + type oc-yang:counter64; + description + "The number of IP packets received for the specified + address family that are multicast packets. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 4293: Management Information Base for the Internet + Protocol (IP) - ipSystemStatsHCInMcastPkts"; + } + + leaf in-multicast-octets { + type oc-yang:counter64; + description + "The total number of octets received in input IP + multicast packets for the specified address + family, including those received in error."; + reference + "RFC 4293: Management Information Base for the Internet + Protocol (IP) - ipSystemStatsHCInMcastOctets"; + } + leaf in-error-pkts { // TODO: this counter combines several error conditions -- // could consider breaking them out to separate leaf nodes @@ -329,6 +360,32 @@ module openconfig-if-ip { Internet Protocol (IP)"; } + leaf out-multicast-pkts { + type oc-yang:counter64; + description + "The total number of IP multicast packets transmitted. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'last-clear'."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP) + - ipSystemStatsHCOutMcastPkts"; + } + + leaf out-multicast-octets { + type oc-yang:counter64; + description + "The total number of IP multicast octets transmitted. This + includes packets generated locally and those forwarded by + the device."; + reference + "RFC 4293 - Management Information Base for the + Internet Protocol (IP)"; + } + leaf out-error-pkts { // TODO: this counter combines several error conditions -- // could consider breaking them out to separate leaf nodes From a6fd34d743f3419a795c0e347e9d03eaf36d2276 Mon Sep 17 00:00:00 2001 From: Yue Zhang <19193057+mryuezhang@users.noreply.github.com> Date: Wed, 6 Sep 2023 17:53:51 -0400 Subject: [PATCH 265/372] Update openconfig-mpls-te.yang (#926) * Update openconfig-mpls-te.yang Added leaf record-record-enabled under grouping tunnel-p2p-attributes-config. --- release/models/mpls/openconfig-mpls-igp.yang | 8 +++++++- release/models/mpls/openconfig-mpls-static.yang | 8 +++++++- release/models/mpls/openconfig-mpls-te.yang | 13 ++++++++++++- release/models/mpls/openconfig-mpls.yang | 7 ++++++- 4 files changed, 32 insertions(+), 4 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index 157d443b8..e71c26657 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,13 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.3.2"; + oc-ext:openconfig-version "3.4.0"; + + revision "2023-07-25" { + description + "Added record-route-enabled to MPLS p2p tunnel config"; + reference "3.4.0"; + } revision "2023-04-28" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index 268d643a5..0a60e9628 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -23,7 +23,13 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.3.2"; + oc-ext:openconfig-version "3.4.0"; + + revision "2023-07-25" { + description + "Added record-route-enabled to MPLS p2p tunnel config"; + reference "3.4.0"; + } revision "2023-04-28" { description diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index 9553b7d86..2fe988e1a 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,13 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.3.2"; + oc-ext:openconfig-version "3.4.0"; + + revision "2023-07-25" { + description + "Added record-route-enabled to MPLS p2p tunnel config"; + reference "3.4.0"; + } revision "2023-04-28" { description @@ -804,6 +810,11 @@ submodule openconfig-mpls-te { description "P2P tunnel destination address"; } + leaf record-route-enabled { + type boolean; + description + "Enables recording a path on an LSP using the record route object (RRO)"; + } } grouping p2p-path-state { diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index 85ca939dd..dde71fba3 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -70,8 +70,13 @@ module openconfig-mpls { +------+ |ROUTING| +-----+ +-------+ "; + oc-ext:openconfig-version "3.4.0"; - oc-ext:openconfig-version "3.3.2"; + revision "2023-07-25" { + description + "Added record-route-enabled to MPLS p2p tunnel config"; + reference "3.4.0"; + } revision "2023-04-28" { description From 98d48c3aae850cde0b504ded0f35c372612dc6a7 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 7 Sep 2023 16:46:17 -0700 Subject: [PATCH 266/372] Add graceful shutdown as BGP_WELL_KNOWN_STD_COMMUNITY (#954) * add graceful shutdown as BGP_WELL_KNOWN_STD_COMMUNITY --- release/models/bgp/openconfig-bgp-errors.yang | 8 +++++++- release/models/bgp/openconfig-bgp-types.yang | 18 +++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index d76233820..d4b9ba5a8 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,13 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "5.4.0"; + oc-ext:openconfig-version "5.5.0"; + + revision "2023-09-06" { + description + "Add GRACEFUL_SHUTDOWN as a BGP_WELL_KNOWN_STD_COMMUNITY"; + reference "5.5.0"; + } revision "2023-03-31" { description diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index c9a7d01ad..447537c5d 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -25,7 +25,13 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "5.4.0"; + oc-ext:openconfig-version "5.5.0"; + + revision "2023-09-06" { + description + "Add GRACEFUL_SHUTDOWN as a BGP_WELL_KNOWN_STD_COMMUNITY"; + reference "5.5.0"; + } revision "2023-03-31" { description @@ -361,6 +367,16 @@ module openconfig-bgp-types { reference "RFC3765"; } + identity GRACEFUL_SHUTDOWN { + base BGP_WELL_KNOWN_STD_COMMUNITY; + description + "An autonomous system which supports the graceful shutdown + receiver procedure receiving NLRI tagged with this community + will set LOCAL_PREF to a low value for those NLRI. This + community has a value of 0xFFFF0000."; + reference "RFC8326"; + } + typedef bgp-session-direction { type enumeration { enum INBOUND { From 1196fbf60a5e58616687ddf22e0b5735b776124f Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 13 Sep 2023 11:05:12 -0700 Subject: [PATCH 267/372] add transceiver module temp thresholds (#948) --- .../openconfig-platform-transceiver.yang | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index e0af67e6e..195f56454 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.12.0"; + oc-ext:openconfig-version "0.13.0"; + +revision "2023-08-30" { + description + "Add transceiver module temperature thresholds"; + reference "0.13.0"; + } revision "2023-06-27" { description @@ -843,6 +849,22 @@ module openconfig-platform-transceiver { } units volts; } + leaf module-temperature-lower { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The lower temperature threshold for the transceiver module."; + } + leaf module-temperature-upper { + type decimal64 { + fraction-digits 1; + } + units celsius; + description + "The upper temperature threshold for the transceiver module."; + } } grouping port-transceiver-top { From 5d38d8531ef9c5b998262207eb6dbdae8968f9fe Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Tue, 19 Sep 2023 11:44:21 -0700 Subject: [PATCH 268/372] ECN counters (#960) * Add ECN marked and selected counters --- .../models/qos/openconfig-qos-elements.yang | 8 +++- .../models/qos/openconfig-qos-interfaces.yang | 44 ++++++++++++++++++- .../models/qos/openconfig-qos-mem-mgmt.yang | 10 ++++- release/models/qos/openconfig-qos.yang | 10 ++++- 4 files changed, 66 insertions(+), 6 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 5c87eb5b4..d2de615d4 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.11.0"; + + revision "2023-09-15" { + description + "Add support for ECN counters"; + reference "0.11.0"; + } revision "2023-07-26" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 1f11cfda6..571414b81 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.11.0"; + + revision "2023-09-15" { + description + "Add support for ECN counters"; + reference "0.11.0"; + } revision "2023-07-26" { description @@ -381,6 +387,42 @@ submodule openconfig-qos-interfaces { or AMQ (RED, WRED, etc) induced drops as indicated by the attached queue-management-profile"; } + + leaf ecn-marked-pkts { + type oc-yang:counter64; + description + "number of packets for which ECN codepoint has been changed from ECT to CE"; + } + + leaf ecn-marked-octets { + type oc-yang:counter64; + description + "Number of octets for which ECN codepoint has been changed from ECT to CE"; + } + + leaf ecn-selected-pkts { + type oc-yang:counter64; + description + "Number of packets selected by AQM + + For RED/WRED AQM this counter counts: + - all packets enqueued while queue utilization was greater then max-threshold + - packs enqueued while queue utilization was between min-threshold and max-threshold, with probability derived from RED/WRED slope + + Packets are counted regardless of its ECN codepoint"; + } + + leaf ecn-selected-octets { + type oc-yang:counter64; + description + "Number of octets of packets selected by AQM + + For RED/WRED AQM this counter counts: + - all octets enqueued while queue utilization was greater then max-threshold + - octets enqueued while queue utilization was between min-threshold and max-threshold, with probability derived from RED/WRED slope + + Octets are counted regardless of its ECN codepoint"; + } } grouping qos-interface-queue-top { diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 13479ee88..70272520b 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,9 +29,15 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.11.0"; - revision "2023-07-26" { + revision "2023-09-15" { + description + "Add support for ECN counters"; + reference "0.11.0"; + } + +revision "2023-07-26" { description "Add buffer management parameters in time unts (microseconds). Make profiles reusable across LAGs and PHY of different speed"; diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 62302d706..2d57bf267 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,9 +27,15 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.11.0"; - revision "2023-07-26" { + revision "2023-09-15" { + description + "Add support for ECN counters"; + reference "0.11.0"; + } + +revision "2023-07-26" { description "Add buffer management parameters in time unts (microseconds). Make profiles reusable across LAGs and PHY of different speed"; From 323a3e2e43c60aafa2bf78ec7c955c00f6cfac4d Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 3 Oct 2023 11:42:29 -0700 Subject: [PATCH 269/372] Add pipeline no-route counter (#967) --- .../openconfig-platform-pipeline-counters.yang | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index e4bad82a6..b7d81c962 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-09-26" { + description + "Add no-route aggregate drop counter."; + reference "0.5.0"; + } + revision "2023-02-03" { description "Add vendor-specific control-plane traffic queue counters"; @@ -1116,6 +1122,16 @@ module openconfig-platform-pipeline-counters { for each uRPF packet drop."; } + leaf no-route { + type oc-yang:counter64; + description + "This aggregation of counters represents the conditions in which + packets are dropped due to no FIB entry for this ipv4 or ipv6 lookup. + + This counter and the packet-processing-aggregate counter should be + incremented for each no-route packet drop."; + } + } grouping pipeline-vendor-drop-packets { From 9b3eed1f1ede0824e9a3af42d7f7ccb52d75c127 Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Mon, 9 Oct 2023 18:54:14 -0700 Subject: [PATCH 270/372] Update openconfig-qos-mem-mgmt.yang (#953) * Update openconfig-qos-mem-mgmt.yang Clarification of expected behaviour if WRED weight leaf is not present. --- release/models/qos/openconfig-qos-elements.yang | 8 +++++++- release/models/qos/openconfig-qos-interfaces.yang | 8 +++++++- release/models/qos/openconfig-qos-mem-mgmt.yang | 13 +++++++++++-- release/models/qos/openconfig-qos.yang | 8 +++++++- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index d2de615d4..613b50768 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,13 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.11.0"; + oc-ext:openconfig-version "0.11.1"; + + revision "2023-09-06" { + description + "Clarification on WRED weight in case it is not present"; + reference "0.11.1"; + } revision "2023-09-15" { description diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 571414b81..28959856b 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,13 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.11.0"; + oc-ext:openconfig-version "0.11.1"; + + revision "2023-09-06" { + description + "Clarification on WRED weight in case it is not present"; + reference "0.11.1"; + } revision "2023-09-15" { description diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 70272520b..75086eadb 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,13 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.11.0"; + oc-ext:openconfig-version "0.11.1"; + + revision "2023-09-06" { + description + "Clarification on WRED weight in case it is not present"; + reference "0.11.1"; + } revision "2023-09-15" { description @@ -403,7 +409,10 @@ revision "2023-07-26" { The previous average is more important for high values of n. Peaks and lows in queue size are smoothed by a high value. For low values - of n, the average queue size is close to the current queue size."; + of n, the average queue size is close to the current queue size. + + When this leaf is not present, implementation default value is + applied."; } leaf max-drop-probability-percent { diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 2d57bf267..5a63029ad 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,13 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.11.0"; + oc-ext:openconfig-version "0.11.1"; + + revision "2023-09-06" { + description + "Clarification on WRED weight in case it is not present"; + reference "0.11.1"; + } revision "2023-09-15" { description From 11e580e2665b5384ade412c507d41d6e616ed192 Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Tue, 10 Oct 2023 10:25:21 -0700 Subject: [PATCH 271/372] Vty files logging (#921) * Add vty and file destinations for syslog --------- Co-authored-by: Darren Loher --- .../system/openconfig-system-logging.yang | 166 +++++++++++++++++- 1 file changed, 162 insertions(+), 4 deletions(-) diff --git a/release/models/system/openconfig-system-logging.yang b/release/models/system/openconfig-system-logging.yang index 3fcc7c5cd..f845547cb 100644 --- a/release/models/system/openconfig-system-logging.yang +++ b/release/models/system/openconfig-system-logging.yang @@ -23,7 +23,13 @@ module openconfig-system-logging { "This module defines configuration and operational state data for common logging facilities on network systems."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + +revision "2023-07-20" { + description + "adding VTY and local files as logging destinations"; + reference "0.6.0"; + } revision "2023-05-04" { description @@ -354,12 +360,12 @@ module openconfig-system-logging { grouping logging-console-config { description - "Configuration data for console logging"; + "Configuration data for console and vty logging"; } grouping logging-console-state { description - "Operational state data for console logging"; + "Operational state data for console and vty logging"; } grouping logging-console-top { @@ -436,7 +442,8 @@ module openconfig-system-logging { container remote-servers { description - "Enclosing container for the list of remote log servers"; + "Enclosing container for the list of remote log + servers"; list remote-server { key "host"; @@ -473,6 +480,154 @@ module openconfig-system-logging { } } + grouping logging-file-config { + description + "Configuration data for logfile"; + + leaf filename-prefix { + type string { + length 0..255; + } + description + "A name used for the file. It is expected that an + implementation may append timestamp, serial-number or + other identifier to the filename."; + } + + leaf path { + type string { + length 0..255; + } + description + "The fully specified path of the folder where the + logfile is stored. The path is implementation specific + and may include attributes such as a drive identifier."; + } + + leaf rotate { + type uint32; + default 0; + description + "Used for logfile rotation. + Log files are rotated the number of times defined by + this leaf. + The default value of 1 indicates that there will be one + rotation file and one active file. A 0 value indicates + old versions are removed rather than rotated."; + } + + leaf max-size { + type uint32; + default 1000; + description + "Used for logfile rotation. + Maximum size in Bytes, logfile may grow to. When logfile + reach this size it triggers log rotation. The log file need to + be save, closed, and new file open or future log storage. + If needed oldest logfile of same prefix shall be deleted to"; + } + + leaf max-open-time { + type uint32; + default 1440; + description + "Used for logfile rotation. + Maximum time, in minutes, the logfile can be open. When expires, + it triggers log rotation. + Actions are same ans when log file reaches its max-size. + it need to be closed, save, and new file open or future log + storage. If needed oldest logfile of same prefix shall be + deleted to "; + } + } + + grouping logging-file-state { + description + "Operational state data for logfile"; + leaf open-logfile { + type string{ + length 0..511; + } + description + "the currently active/open filename prepended by folder path + and including suffix appended to filename-prefix by system"; + } + } + + grouping logging-files-top { + description + "Top-level grouping for local log files"; + + container files { + description + "Enclosing container for the list of log files"; + + list file { + key "path filename-prefix"; + description + "List of logfiles"; + + leaf filename-prefix { + type leafref { + path "../config/filename-prefix"; + } + description + "Reference to the logfiles list key"; + } + + leaf path { + type leafref { + path "../config/path"; + } + description + "Reference to the logfiles list key"; + } + + container config { + description + "Configuration data for logfile"; + uses logging-file-config; + } + + container state { + config false; + description + "Operational state data for logfile servers"; + uses logging-file-config; + uses logging-file-state; + } + uses logging-selectors-top; + } + } + } + + grouping logging-vty-top { + description + "Top-level grouping for vty logging data"; + + container vty { + description + "Top-level container for data related to vty-based + logging (active sessions of ssh, telnet, etc )"; + + container config { + description + "Configuration data for vty logging"; + + uses logging-console-config; + } + + container state { + config false; + description + "Operational state data for console logging"; + uses logging-console-config; + uses logging-console-state; + } + uses logging-selectors-top; + } + } + grouping logging-top { description "Top-level grouping for logging data"; @@ -483,6 +638,9 @@ module openconfig-system-logging { uses logging-console-top; uses logging-remote-top; + uses logging-files-top; + uses logging-vty-top; + } } // data definition statements From 13260a464a0dde9a47cf8f3f10ef256922c566ae Mon Sep 17 00:00:00 2001 From: wenovus Date: Fri, 13 Oct 2023 12:49:24 -0700 Subject: [PATCH 272/372] Fix revision statements and enable pyangbind as regular checker --- cloudbuild.yaml | 1 - release/models/qos/openconfig-qos-elements.yang | 10 ++++++++-- release/models/qos/openconfig-qos-interfaces.yang | 10 ++++++++-- release/models/qos/openconfig-qos-mem-mgmt.yang | 10 ++++++++-- release/models/qos/openconfig-qos.yang | 10 ++++++++-- 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index f746bf7c0..602afe21d 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -90,7 +90,6 @@ steps: -skipped-validators=confd,yanglint -extra-pyang-versions=2.2.1 -branch=$BRANCH_NAME - -compat-report=pyangbind secretEnv: ['GITHUB_ACCESS_TOKEN'] env: - 'GOPATH=/go' diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index 613b50768..6aee18d72 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,9 +35,15 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.11.1"; + oc-ext:openconfig-version "0.11.2"; - revision "2023-09-06" { + revision "2023-10-13" { + description + "Fix revision statement date"; + reference "0.11.2"; + } + + revision "2023-10-08" { description "Clarification on WRED weight in case it is not present"; reference "0.11.1"; diff --git a/release/models/qos/openconfig-qos-interfaces.yang b/release/models/qos/openconfig-qos-interfaces.yang index 28959856b..c45c0974b 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,9 +25,15 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.11.1"; + oc-ext:openconfig-version "0.11.2"; - revision "2023-09-06" { + revision "2023-10-13" { + description + "Fix revision statement date"; + reference "0.11.2"; + } + + revision "2023-10-08" { description "Clarification on WRED weight in case it is not present"; reference "0.11.1"; diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index 75086eadb..34c373d58 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,9 +29,15 @@ submodule openconfig-qos-mem-mgmt { per-queue basis, and determine how packets are marked/dropped within the queue instantiation."; - oc-ext:openconfig-version "0.11.1"; + oc-ext:openconfig-version "0.11.2"; - revision "2023-09-06" { + revision "2023-10-13" { + description + "Fix revision statement date"; + reference "0.11.2"; + } + + revision "2023-10-08" { description "Clarification on WRED weight in case it is not present"; reference "0.11.1"; diff --git a/release/models/qos/openconfig-qos.yang b/release/models/qos/openconfig-qos.yang index 5a63029ad..9feb9b3ba 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,9 +27,15 @@ module openconfig-qos { "This module defines configuration and operational state data related to network quality-of-service."; - oc-ext:openconfig-version "0.11.1"; + oc-ext:openconfig-version "0.11.2"; - revision "2023-09-06" { + revision "2023-10-13" { + description + "Fix revision statement date"; + reference "0.11.2"; + } + + revision "2023-10-08" { description "Clarification on WRED weight in case it is not present"; reference "0.11.1"; From 65254444ff74a8844e984691e553899807117f80 Mon Sep 17 00:00:00 2001 From: wenovus Date: Fri, 13 Oct 2023 14:17:29 -0700 Subject: [PATCH 273/372] Bump models-ci version --- cloudbuild.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 602afe21d..ff235983e 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,7 +52,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v11.*' | sort -V | tail -1) + branch=$(git tag -l 'v12.*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' From 57adeafc825d885b953eec1cd02663c095ccdf71 Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Tue, 17 Oct 2023 11:09:03 -0600 Subject: [PATCH 274/372] Adding FREQ_2_6_GHZ to wifi-types #923 (#950) --- release/models/wifi/openconfig-wifi-types.yang | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-types.yang b/release/models/wifi/openconfig-wifi-types.yang index d2d62f038..30e358ae3 100644 --- a/release/models/wifi/openconfig-wifi-types.yang +++ b/release/models/wifi/openconfig-wifi-types.yang @@ -22,7 +22,13 @@ module openconfig-wifi-types { that are used in the openconfig-wifi modules. It can be imported by any module to make use of these types."; - oc-ext:openconfig-version "1.1.1"; + oc-ext:openconfig-version "1.1.2"; + + revision "2023-09-01" { + description + "Adding FREQ_2_6_GHZ."; + reference "1.1.2"; + } revision "2022-05-26" { description @@ -273,6 +279,12 @@ module openconfig-wifi-types { 6GHz frequencies."; } + identity FREQ_2_6_GHZ { + base OPERATING_FREQUENCY; + description "The Radio or SSID will be dual band; operating in 2.4 and + 6GHz frequencies."; + } + identity CLIENT_CAPABILITIES { description "Client capabilities, as reported by Association Request or From 771cd192d99e43ab8b1f55bdc0f33c443d63dfe1 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 17 Oct 2023 14:13:58 -0700 Subject: [PATCH 275/372] add NEXT-STATEMENT to policy-result-type (#949) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update release/models/policy/openconfig-routing-policy.yang * add continue to policy-result-type --------- Co-authored-by: Óscar González de Dios --- .../policy/openconfig-routing-policy.yang | 30 +++++++++++++++---- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/release/models/policy/openconfig-routing-policy.yang b/release/models/policy/openconfig-routing-policy.yang index bf419b779..921e127e5 100644 --- a/release/models/policy/openconfig-routing-policy.yang +++ b/release/models/policy/openconfig-routing-policy.yang @@ -52,9 +52,14 @@ module openconfig-routing-policy { corresponding individual policy statements in order. When a condition statement in a policy statement is satisfied, the corresponding action statement is executed. If the action - statement has either accept-route or reject-route actions, policy - evaluation of the current policy definition stops, and no further - policy definitions in the chain are evaluated. + statement has a final disposition configured as policy result, either + accept-route or reject-route, evaluation of the current policy definition + stops, and no further policy statements are evaluated. In case there is a + policy chain, no further policy definitions in the chain are evaluated. + + If the action statement has the NEXT_STATEMENT policy result, all the + defined actions are executed and policy evaluation proceeds to the next + statement. The NEXT_STATEMENT is the default policy result action. If the condition is not satisfied, then evaluation proceeds to the next policy statement. If none of the policy statement @@ -77,7 +82,13 @@ module openconfig-routing-policy { the remaining conditions (using a modified route if the subroutine performed any changes to the route)."; - oc-ext:openconfig-version "3.3.0"; + oc-ext:openconfig-version "3.4.0"; + + revision "2023-10-11" { + description + "Add NEXT_STATEMENT policy-result-type enum value."; + reference "3.4.0"; + } revision "2022-05-24" { description @@ -162,12 +173,19 @@ module openconfig-routing-policy { typedef policy-result-type { type enumeration { enum ACCEPT_ROUTE { - description "Policy accepts the route"; + description "Policy accepts the route and evaluation of the + current policy definition stops."; } enum REJECT_ROUTE { - description "Policy rejects the route"; + description "Policy rejects the route and evaluation of the + current policy definition stops."; + } + enum NEXT_STATEMENT { + description "Any modifications of the route are preserved and the evaluation of the policy will continue to the + next statement."; } } + default NEXT_STATEMENT; description "Type used to specify route disposition in a policy chain"; From 0bd68159424078c8fbc3724a4bc1ef4e947eb3cf Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Thu, 19 Oct 2023 14:15:50 -0400 Subject: [PATCH 276/372] Update to support multiple next-hops per L2RIB producer (#857) * Add L2RIB Per Producer Next-Hop Capability * Make next-hop-groups a leaf-list * mark l2rib next-hop property as deprecated --- .../openconfig-network-instance-l2.yang | 127 +++++++++++++++++- .../openconfig-network-instance.yang | 8 +- 2 files changed, 132 insertions(+), 3 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index b9f4ede2f..46d433fd3 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.1.1"; + oc-ext:openconfig-version "4.2.0"; + + revision "2023-09-07" { + description + "Add L2RIB Per Producer Next-Hop Capability"; + reference "4.2.0"; + } revision "2023-08-09" { description @@ -545,6 +551,7 @@ submodule openconfig-network-instance-l2 { } } } + uses l2ni-l2rib-common-next-hop-group-state; uses l2ni-l2rib-common-next-hop-state; } @@ -606,6 +613,7 @@ submodule openconfig-network-instance-l2 { } } } + uses l2ni-l2rib-common-next-hop-group-state; uses l2ni-l2rib-common-next-hop-state; } } @@ -708,7 +716,10 @@ submodule openconfig-network-instance-l2 { leaf esi { type oc-evpn-types:esi; - description "Ethernet Segment Identifier for local and remote routes"; + description + "Ethernet Segment Identifier (ESI) for local and remote routes. + ESI is used to resolve the next-hop-group. All mac-addresses + learned with the same ESI should point to the same next-hop-group"; } leaf sticky { @@ -721,8 +732,16 @@ submodule openconfig-network-instance-l2 { type leafref { path "../../../../../../next-hops/next-hop/index"; } + status deprecated; description "Leafref next-hop for the MAC-IP table entry"; } + + leaf-list next-hop-group { + type leafref { + path "../../../../../../next-hop-groups/next-hop-group/id"; + } + description "Leafref next-hop-group for the MAC-IP table entry"; + } } grouping l2ni-l2rib-common-next-hop-state { @@ -757,11 +776,115 @@ submodule openconfig-network-instance-l2 { type oc-evpn-types:evi-id; description "Next hop label representing the l2vni for the route"; } + leaf esi { + type oc-evpn-types:esi; + description "Ethernet Segment Identifier (ESI)"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + leaf resolved { + type boolean; + description + "Indicates if the path is eligible for forwarding as per evpn mass + withdraw procedures as defined in RFC 7432"; + } uses oc-if:interface-ref-common; } } } } + + grouping l2ni-l2rib-common-next-hop-group-state { + description "L2RIB Common Next Hop Group Attributes Operational State Data Grouping"; + + container next-hop-groups { + description "Surrounding container for groups of L2RIB next-hops."; + list next-hop-group { + key "id"; + description + "An individual set of next-hops grouped into a common group. + Each entry within an L2RIB can optionally point to a + next-hop-group."; + + leaf id { + type leafref { + path "../state/id"; + } + description + "A reference to a unique identifier for the next-hop-group."; + } + container state { + description "State container for common next-hop-group attributes"; + config false; + leaf id { + type uint64; + description + "A unique identifier for the next-hop-group. This index is not + expected to be consistent across reboots, or reprogramming of + the next-hop-group. When updating a next-hop-group, if the group + is removed by the system or assigned an alternate identifier, the + system should send telemetry notifications deleting the previous + identifier. If the identifier of the next-hop-group is changed, + all L2RIB entries that reference it must also be updated."; + } + leaf esi { + type oc-evpn-types:esi; + description "Ethernet Segment Identifier (ESI)"; + reference "RFC7432: BGP MPLS-Based Ethernet VPN"; + } + leaf type { + type enumeration { + enum ESI { + description + "Per ESI pathlist next-hop-group used for evpn mass withdraw procedures as defined in RFC 7432"; + } + enum ESI_EVI { + description + "Per ESI,EVI pathlist next-hop-group used for evpn aliasing procedures as defined in RFC 7432"; + } + enum BASE_ECMP { + description + "Base ECMP next-hop-group used in absence of evpn aliasing"; + } + } + description "Type of next-hop-group"; + } + } + container next-hops { + description + "Surrounding container for the list of next-hops within the next-hop-group."; + list next-hop { + key "index"; + description + "An individual next-hop within the next-hop-group. Each next-hop is a + reference to an entry within the next-hop list."; + + leaf index { + type leafref { + path "../state/index"; + } + description + "A reference to the index for the next-hop within the the next-hop-group."; + } + container state { + description + "Operational state parameters related to a next-hop within the next-hop-group."; + config false; + leaf index { + type leafref { + path "../../../../../../next-hops/next-hop/index"; + } + description + "A reference to the identifier for the next-hop to which the entry in the + next-hop group corresponds."; + } + } + } + } + + } + } + } + grouping l2ni-l2rib-mac-table-producer-state { description "L2RIB MAC Table Operational State Data Grouping"; diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 8f104d175..984425388 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.1.1"; + oc-ext:openconfig-version "4.2.0"; + + revision "2023-09-07" { + description + "Add L2RIB Per Producer Next-Hop Capability"; + reference "4.2.0"; + } revision "2023-08-09" { description From 0426774f2d7af0dc0a2b913893c8d45644176d65 Mon Sep 17 00:00:00 2001 From: romeyod <78448014+romeyod@users.noreply.github.com> Date: Fri, 27 Oct 2023 01:29:39 -0400 Subject: [PATCH 277/372] Add `next-hop-group-name` in NHG AFT entry state (#966) * * (M) aft/openconfig-aft-common.yang * (M) aft/openconfig-aft-common.yang * (M) aft/openconfig-aft-ethernet.yang * (M) aft/openconfig-aft-ipv4.yang * (M) aft/openconfig-aft-ipv6.yang * (M) aft/openconfig-aft-mpls.yang * (M) aft/openconfig-aft-pf.yang * (M) aft/openconfig-aft-state-synced.yang * (M) aft/openconfig-aft.yang - Add next-hop-group-name in NHG AFT entry state --- release/models/aft/openconfig-aft-common.yang | 16 +++++++++++++++- release/models/aft/openconfig-aft-ethernet.yang | 8 +++++++- release/models/aft/openconfig-aft-ipv4.yang | 8 +++++++- release/models/aft/openconfig-aft-ipv6.yang | 8 +++++++- release/models/aft/openconfig-aft-mpls.yang | 8 +++++++- release/models/aft/openconfig-aft-pf.yang | 8 +++++++- .../models/aft/openconfig-aft-state-synced.yang | 8 +++++++- release/models/aft/openconfig-aft.yang | 8 +++++++- 8 files changed, 64 insertions(+), 8 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index b2c44dad6..51e527edd 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description @@ -579,6 +585,14 @@ submodule openconfig-aft-common { also be updated."; } + leaf next-hop-group-name { + type string; + description + "Where applicable, this leaf is a unique identifier string for the + next-hop-group. It is an arbitrary name for the group, that is + supported by vendors and is exposed for telemetry."; + } + leaf programmed-id { type uint64; description diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index d0b85dfc7..196447d97 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index 04d4054c2..c887857cc 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 6b6cd1937..85ac46a97 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 4b4fd828c..6f07233e2 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,13 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 85ee9d78f..125b3d9a2 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index a20dd9257..76f35975d 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,13 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index c204271de..4af67e426 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.3.0"; + oc-ext:openconfig-version "2.4.0"; + + revision "2023-09-26" { + description + "Add next-hop-group-name in NHG AFT entry state."; + reference "2.4.0"; + } revision "2023-04-19" { description From 34a30abbe10033b9f674939347dfde1ba03c7d9d Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 31 Oct 2023 09:59:20 -0700 Subject: [PATCH 278/372] Clarify default policy (#983) --- .../models/policy/openconfig-routing-policy.yang | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/release/models/policy/openconfig-routing-policy.yang b/release/models/policy/openconfig-routing-policy.yang index 921e127e5..2444f305d 100644 --- a/release/models/policy/openconfig-routing-policy.yang +++ b/release/models/policy/openconfig-routing-policy.yang @@ -80,9 +80,21 @@ module openconfig-routing-policy { policy. Similarly, a reject-route action returns false. If the subroutine returns true, the calling policy continues to evaluate the remaining conditions (using a modified route if the - subroutine performed any changes to the route)."; + subroutine performed any changes to the route). - oc-ext:openconfig-version "3.4.0"; + If a routing protocol is defined and the related + apply-policy/default-(import|export)-policy leaf is not set, the + default value for the default-(import|export)-policy leaf must be + applied. See RFC6020 7.6.1 which applies to this model."; + + oc-ext:openconfig-version "3.4.1"; + + revision "2023-10-24" { + description + "Clarify the use of default-(import|export)-policy when no policy + is applied to a protocol."; + reference "3.4.1"; + } revision "2023-10-11" { description From 5d8bc6a7006a29cfd91b2340ee57dc8d860ef178 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Tue, 31 Oct 2023 18:16:03 -0400 Subject: [PATCH 279/372] Candidate Model for Repeated BGP set-communities/set-ext-communities (#968) * Change communiity-set-ref to leaf-list --- release/models/bgp/openconfig-bgp-policy.yang | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index 05ae1bacb..c999d2941 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,16 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.1.1"; + oc-ext:openconfig-version "6.2.0"; + + revision "2023-10-03" { + description + "Deprecate community-set-ref and ext-community-set-ref, + add the following leaf-list nodes: + * community-set-refs + * ext-community-set-refs"; + reference "6.2.0"; + } revision "2023-03-27" { description @@ -831,7 +840,19 @@ module openconfig-bgp-policy { "Configuration data for referening a community-set in the set-community action"; + leaf-list community-set-refs { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/" + + "oc-bgp-pol:community-sets/oc-bgp-pol:community-set/" + + "oc-bgp-pol:community-set-name"; + } + description + "References a list of defined community sets by name"; + } + leaf community-set-ref { + status deprecated; type leafref { path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + "oc-bgp-pol:bgp-defined-sets/" + @@ -994,7 +1015,21 @@ module openconfig-bgp-policy { "Configuration data for referening a extended community-set in the set-ext-community action"; + leaf-list ext-community-set-refs { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/" + + "oc-bgp-pol:ext-community-sets/" + + "oc-bgp-pol:ext-community-set/" + + "oc-bgp-pol:ext-community-set-name"; + } + description + "References a list of defined extended community sets by + name"; + } + leaf ext-community-set-ref { + status deprecated; type leafref { path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + "oc-bgp-pol:bgp-defined-sets/" + From 1370303d273184569cad4e9c867933e66ff97406 Mon Sep 17 00:00:00 2001 From: Roland Phung Date: Wed, 1 Nov 2023 23:04:56 -0700 Subject: [PATCH 280/372] Add BGP default import/export policy into global config (#970) * Add the following paths into bgp/global and bgp/global/afi-safis/afi-safi/ * apply-policy/default-import-policy * Refactored apply-policy grouping to separate default from regular policy --- .../openconfig-bgp-common-multiprotocol.yang | 8 ++- .../bgp/openconfig-bgp-common-structure.yang | 8 ++- release/models/bgp/openconfig-bgp-common.yang | 8 ++- release/models/bgp/openconfig-bgp-global.yang | 11 ++- .../models/bgp/openconfig-bgp-neighbor.yang | 8 ++- .../models/bgp/openconfig-bgp-peer-group.yang | 8 ++- release/models/bgp/openconfig-bgp.yang | 8 ++- release/models/isis/openconfig-isis-lsp.yang | 9 ++- .../models/isis/openconfig-isis-routing.yang | 9 ++- release/models/isis/openconfig-isis.yang | 10 ++- .../openconfig-network-instance-l2.yang | 9 ++- .../openconfig-network-instance.yang | 10 ++- .../openconfig-ospfv2-area-interface.yang | 9 ++- .../models/ospf/openconfig-ospfv2-area.yang | 9 ++- .../models/ospf/openconfig-ospfv2-common.yang | 9 ++- .../models/ospf/openconfig-ospfv2-global.yang | 12 +++- .../models/ospf/openconfig-ospfv2-lsdb.yang | 9 ++- release/models/ospf/openconfig-ospfv2.yang | 11 ++- .../policy/openconfig-routing-policy.yang | 68 +++++++++++++++++-- 19 files changed, 209 insertions(+), 24 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 60f4d67d6..e85eca584 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index a73bc9d46..92ea39425 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 7cad2ac6f..07d38a027 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index f3ceff357..761becbf1 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -7,6 +7,7 @@ submodule openconfig-bgp-global { import openconfig-extensions { prefix oc-ext; } import openconfig-yang-types { prefix oc-yang; } import openconfig-inet-types { prefix oc-inet; } + import openconfig-routing-policy { prefix oc-rpol; } // Include common submodules include openconfig-bgp-common; @@ -26,7 +27,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description @@ -397,6 +404,7 @@ submodule openconfig-bgp-global { uses bgp-common-global-group-use-multiple-paths; uses bgp-common-structure-neighbor-group-add-paths; uses bgp-global-mp-all-afi-safi-list-contents; + uses oc-rpol:default-policy-group; } } @@ -482,6 +490,7 @@ submodule openconfig-bgp-global { } uses bgp-global-dynamic-neighbors; + uses oc-rpol:default-policy-group; } } diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 1b76c81a6..830c76d91 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 438ee5005..84c12d090 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index b9e9b2f07..6d28c872e 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,13 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.4.1"; + oc-ext:openconfig-version "9.5.0"; + + revision "2023-11-01" { + description + "Add default apply policy to global and per afi-safi config."; + reference "9.5.0"; + } revision "2023-06-27" { description diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index a8415a632..95d31837e 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,14 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.6.0"; + oc-ext:openconfig-version "1.6.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "1.6.1"; + } revision "2023-05-01" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index df8af637b..56f0faed4 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,14 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.6.0"; + oc-ext:openconfig-version "1.6.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "1.6.1"; + } revision "2023-05-01" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index a27a82f76..fe99d4024 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,14 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.6.0"; + oc-ext:openconfig-version "1.6.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "1.6.1"; + } revision "2023-05-01" { description @@ -978,6 +985,7 @@ module openconfig-isis { "Policy governing the propagation of prefixes between levels."; uses oc-rpol:apply-policy-import-config; + uses oc-rpol:default-policy-import-config; } grouping isis-mpls-config { diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 46d433fd3..2f93312ca 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.2.0"; + oc-ext:openconfig-version "4.2.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "4.2.1"; + } revision "2023-09-07" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index 984425388..d680f4a9a 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.2.0"; + oc-ext:openconfig-version "4.2.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "4.2.1"; + } revision "2023-09-07" { description @@ -1223,6 +1230,7 @@ module openconfig-network-instance { } uses oc-rpol:apply-policy-import-config; + uses oc-rpol:default-policy-import-config; } grouping network-instance-config { diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 92cfdd7f9..3045ad03c 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,14 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "0.5.1"; + } revision "2023-08-25" { description diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index 1ff82db2b..e0f0020f8 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,14 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "0.5.1"; + } revision "2023-08-25" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index 8a90fcc58..8bfd890b4 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,14 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "0.5.1"; + } revision "2023-08-25" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index 73007d05e..e6c0256ec 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,13 +23,20 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "0.5.1"; + } revision "2023-08-25" { description "Add leaf metric to lsdb-summary-lsa-state."; reference "0.5.0"; -} + } revision "2023-08-09" { description @@ -317,6 +324,7 @@ submodule openconfig-ospfv2-global { } uses oc-rpol:apply-policy-import-config; + uses oc-rpol:default-policy-import-config; } grouping ospfv2-global-max-metric-config { diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index 35599a961..e1eda9fdd 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,14 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "0.5.1"; + } revision "2023-08-25" { description diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index bce9391ac..fb5a7e031 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,13 +34,20 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "0.5.1"; + } revision "2023-08-25" { description "Add leaf metric to lsdb-summary-lsa-state."; reference "0.5.0"; -} + } revision "2023-08-09" { description diff --git a/release/models/policy/openconfig-routing-policy.yang b/release/models/policy/openconfig-routing-policy.yang index 2444f305d..8a61d8be0 100644 --- a/release/models/policy/openconfig-routing-policy.yang +++ b/release/models/policy/openconfig-routing-policy.yang @@ -87,7 +87,14 @@ module openconfig-routing-policy { default value for the default-(import|export)-policy leaf must be applied. See RFC6020 7.6.1 which applies to this model."; - oc-ext:openconfig-version "3.4.1"; + oc-ext:openconfig-version "3.4.2"; + + revision "2023-11-01" { + description + "Refactor apply policy to separate default policy in it's own common + set of groupings"; + reference "3.4.2"; + } revision "2023-10-24" { description @@ -1211,6 +1218,11 @@ module openconfig-routing-policy { for the current peer group, neighbor, address family, etc."; } + } + + grouping default-policy-import-config { + description + "Configuration data for default import policy"; leaf default-import-policy { type default-policy-type; @@ -1219,7 +1231,6 @@ module openconfig-routing-policy { "explicitly set a default policy if no policy definition in the import policy chain is satisfied."; } - } grouping apply-policy-export-config { @@ -1241,6 +1252,11 @@ module openconfig-routing-policy { for the current peer group, neighbor, address family, etc."; } + } + + grouping default-policy-export-config { + description + "Configuration data for default export policy"; leaf default-export-policy { type default-policy-type; @@ -1251,22 +1267,37 @@ module openconfig-routing-policy { } } - grouping apply-policy-config { description "Configuration data for routing policies"; uses apply-policy-import-config; uses apply-policy-export-config; - + uses default-policy-config; } + grouping default-policy-config { + description + "Configuration data for default routing policies"; + uses default-policy-import-config; + uses default-policy-export-config; + } grouping apply-policy-state { description "Operational state associated with routing policy"; + uses default-policy-state; + + //TODO: identify additional state data beyond the intended + //policy configuration. + } + + grouping default-policy-state { + description + "Operational state associated with routing policy"; + //TODO: identify additional state data beyond the intended //policy configuration. } @@ -1303,6 +1334,35 @@ module openconfig-routing-policy { } } + grouping default-policy-group { + description + "Top level container for default routing policy applications."; + + container apply-policy { + description + "Anchor point for routing policies in the model. + Import and export policies are with respect to the local + routing table, i.e., export (send) and import (receive), + depending on the context."; + + container config { + description + "Policy configuration data."; + + uses default-policy-config; + } + + container state { + config false; + description + "Operational state for routing policy"; + + uses default-policy-config; + uses default-policy-state; + } + } + } + uses routing-policy-top; } From dccd493ee4802f8edbe465915d43fb1b7175b34c Mon Sep 17 00:00:00 2001 From: atmanmehta <62303086+atmanmehta@users.noreply.github.com> Date: Thu, 2 Nov 2023 10:24:00 -0700 Subject: [PATCH 281/372] Link damping (#947) * Add support for penalty-based-aied. This is a link damping algorithm that is mutually exclusive from hold time --------- Co-authored-by: wenovus --- .../interfaces/openconfig-interfaces.yang | 90 ++++++++++++++++++- 1 file changed, 87 insertions(+), 3 deletions(-) diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index 9589c2cb2..248b5f71d 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,7 +51,13 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.6.0"; + revision "2023-08-29" { + description + "Add augment for penalty-based additive-increase, exponential-decrease link damping algorithm."; + reference + "3.6.0"; + } revision "2023-07-14" { description @@ -497,6 +503,75 @@ module openconfig-interfaces { } } + grouping interface-link-damping-config { + description + "Configuration data for interface link damping settings."; + + leaf max-suppress-time { + type uint32; + units milliseconds; + default 0; + description + "Maximum time an interface can remain damped since the last link down event no matter how unstable it has been prior to this period of stability. In a damped state, the interface’s state change will not be advertised."; + } + + leaf decay-half-life { + type uint32; + units milliseconds; + default 0; + description + "The amount of time after which an interface’s penalty is decreased by half. Decay-half-time should not be more than max-suppress-time."; + } + + leaf suppress-threshold { + type uint32; + default 0; + description + "The accumulated penalty that triggers the damping of an interface. A value of 0 indicates config is disabled."; + } + + leaf reuse-threshold { + type uint32; + default 0; + description + "When the accumulated penalty decreases to this reuse threshold, the interface is not damped anymore. Interface state changes are advertised to applications. A value of 0 indicates config is disabled."; + } + + leaf flap-penalty { + type uint32; + default 0; + description + "A penalty that each down event costs. A value of 0 indicates the config is disabled."; + } + } + grouping interface-link-damping-state { + description + "Operational state data for interface link damping settings."; + } + grouping link-damping-top { + description + "Top level grouping for link damping parameters."; + + container penalty-based-aied { + description + "Top level container to suppress UP->DOWN link events using a penalty based additive-increase, exponential-decrease algorithm."; + + container config { + description + "Configuration data for link damping settings."; + uses interface-link-damping-config; + } + + container state { + config false; + description + "Operational state data for link damping settings."; + uses interface-link-damping-config; + uses interface-link-damping-state; + } + } + } + grouping interface-common-state { description "Operational state data (in addition to intended configuration) @@ -1221,7 +1296,16 @@ module openconfig-interfaces { } } - uses interface-phys-holdtime-top; + uses interface-phys-holdtime-top { + when "./penalty-based-aied/config/suppress-threshold = 0 + or ./penalty-based-aied/config/reuse-threshold = 0 + or ./penalty-based-aied/config/flap-penalty = 0" { + description + "Hold time and penalty-based-aied are two algorithms to suppress + link transitions and must be mutually exclusive."; + } + } + uses link-damping-top; uses subinterfaces-top; } } @@ -1229,4 +1313,4 @@ module openconfig-interfaces { uses interfaces-top; -} +} \ No newline at end of file From 025b0ee222358562b993e5216209600de9416dd0 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 3 Nov 2023 16:40:04 -0700 Subject: [PATCH 282/372] Revert "Added new model for route summary (#783)" (#992) This reverts commit 19be716b607a9ac0f9145af994c8d11d63027e77. --- release/models/network-instance/.spec.yml | 2 - .../openconfig-route-summary.yang | 112 ------------------ 2 files changed, 114 deletions(-) delete mode 100644 release/models/network-instance/openconfig-route-summary.yang diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 9874ec073..615cf82ef 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -5,7 +5,6 @@ - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang - yang/network-instance/openconfig-programming-errors.yang - - yang/network-instance/openconfig-route-summary.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang - yang/segment-routing/openconfig-segment-routing.yang @@ -13,7 +12,6 @@ build: - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang - - yang/network-instance/openconfig-route-summary.yang - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang run-ci: true diff --git a/release/models/network-instance/openconfig-route-summary.yang b/release/models/network-instance/openconfig-route-summary.yang deleted file mode 100644 index 169894b32..000000000 --- a/release/models/network-instance/openconfig-route-summary.yang +++ /dev/null @@ -1,112 +0,0 @@ -module openconfig-route-summary { - yang-version "1"; - - namespace "http://openconfig.net/yang/route-summary"; - - prefix "oc-rtsummary"; - - import openconfig-extensions { prefix "oc-ext"; } - import openconfig-yang-types { prefix "oc-yang-types"; } - import openconfig-policy-types { prefix "oc-pol-types"; } - import openconfig-network-instance { prefix "oc-ni"; } - - organization - "OpenConfig working group"; - - contact - "OpenConfig working group - www.openconfig.net"; - - description - "This module provides summary of route counts per route type for each network - instance."; - - oc-ext:openconfig-version "1.0.0"; - - revision "2022-12-21" { - description - "Initial version."; - reference "1.0.0"; - } - - grouping route-counter { - description - "Route type counter item."; - - leaf origin-protocol { - description - "Route type that keys the route count list."; - - type identityref { - base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; - } - } - - container total-count { - description - "A collection of route counts."; - uses total-count; - } - } - - grouping total-count { - description - "A collection of route counts."; - - leaf fib-count { - description - "Total number of routes in the FIB."; - type oc-yang-types:counter64; - } - } - - grouping route-summary { - description - "A summary of route count by route type."; - - list route-count { - key "origin-protocol"; - - description - "Route types that keys the route count list."; - - leaf origin-protocol { - type leafref { - path "../state/origin-protocol"; - } - description - "Reference to the source of the route."; - } - - container state { - description - "State parameters for the route summary list entry."; - uses route-counter; - } - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/oc-ni:ipv6-unicast" { - description - "Augment the network-instance model with the route summary container for - IPv4."; - - container summary { - uses route-summary; - description - "IPv4 route summary for the network instance."; - } - } - - augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts/oc-ni:ipv4-unicast" { - description - "Augment the network-instance model with the route summary container for - IPv6."; - - container summary { - uses route-summary; - description - "IPv6 route summary for the network instance."; - } - } -} From c4ff974dc48bf4385ddbe1041a575cf405e8913f Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 13 Nov 2023 19:26:09 -0500 Subject: [PATCH 283/372] add ygnmi to CI (#998) --- cloudbuild.yaml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index ff235983e..4a3d82970 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -52,7 +52,7 @@ steps: git clone git@github.com:openconfig/models-ci.git /go/src/github.com/openconfig/models-ci cd /go/src/github.com/openconfig/models-ci # Modify the major version to update models-ci version. - branch=$(git tag -l 'v12.*' | sort -V | tail -1) + branch=$(git tag -l 'v13.*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' @@ -229,6 +229,24 @@ steps: waitFor: ['validator prep', 'go path creation', 'oc-pyang'] id: 'goyang-ygot' +############### YGNMI ############### +- name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' + entrypoint: 'bash' + args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/ygnmi/test.sh"] + secretEnv: ['GITHUB_ACCESS_TOKEN'] + volumes: + - name: 'gopath' + path: /go + env: + - 'GOPATH=/go' + - '_PR_NUMBER=$_PR_NUMBER' + - '_MODEL_ROOT=$_MODEL_ROOT' + - 'COMMIT_SHA=$COMMIT_SHA' + - '_REPO_SLUG=$_REPO_SLUG' + - 'BRANCH_NAME=$BRANCH_NAME' + waitFor: ['validator prep', 'go path creation', 'oc-pyang'] + id: 'ygnmi' + ############### PYANG ############### - name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' From 28a7b6b726c134140bebdd64f08f34f7dca1c459 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Tue, 14 Nov 2023 12:07:06 -0500 Subject: [PATCH 284/372] Update README.md with ygnmi badge (#999) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 236c7d979..83ae80d5c 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ [![OpenConfig Linter](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:oc-pyang.svg)](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:oc-pyang.html) [![pyangbind](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:pyangbind.svg)](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:pyangbind.html) [![goyang/ygot](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:goyang-ygot.svg)](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:goyang-ygot.html) +[![ygnmi](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:ygnmi.svg)](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:ygnmi.html) [![yanglint](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:yanglint.svg)](https://storage.googleapis.com/openconfig/compatibility-badges/openconfig-public:yanglint.html) # OpenConfig From adf582e54f778d41092967b6b4bea85107f9935d Mon Sep 17 00:00:00 2001 From: sachendras <44847441+sachendras@users.noreply.github.com> Date: Thu, 16 Nov 2023 11:23:57 -0800 Subject: [PATCH 285/372] Update openconfig-network-instance.yang (#987) * Clarify network_instance_redistribution and default route policy --------- Co-authored-by: Darren Loher Co-authored-by: Wen Bo Li <50884368+wenovus@users.noreply.github.com> --- doc/network_instance_redistribution.md | 5 ++++- .../openconfig-network-instance-l2.yang | 8 +++++++- .../openconfig-network-instance.yang | 12 +++++++++++- 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/doc/network_instance_redistribution.md b/doc/network_instance_redistribution.md index e531a66b4..d35b67fdd 100644 --- a/doc/network_instance_redistribution.md +++ b/doc/network_instance_redistribution.md @@ -22,7 +22,8 @@ In numerous use cases an operator wishes to take routes that exist in one protoc In those implementations that maintain a (virtual-) RIB per protocol, the operator must configure explicit connections between these tables, usually alongside a policy to allow such inter-protocol advertisement to occur. While no such configuration is required in those implementations that utilise a single RIB, it is notable that even in these implementations a protocol will not advertise another protocol's routes from the RIB by default (since such a setup would mean that for instance, the BGP DFZ would be re-advertised into the IGP at peering edge devices, which is clearly not desirable). Instead, an operator must create explicit configuration that matches routes installed into the RIB by a particular protocol, and then "import" these routes into the protocol that is expected to advertise them. -In this latter case, the use of an import policy within a particular protocol instance is equivalent to the former - with the only difference being the context in which the policy is defined. With a table per protocol, an explicit configuration of redistributing routes from protocol A to protocol B is specified. In the latter case, the target protocol (protocol B) is specified, and a policy is used to select the source protocols from which routes may be imported for advertisement. +In this latter case, the use of an import policy within a particular protocol instance is equivalent to the former - with the only difference being the context in which the policy is defined. With a table per protocol, an explicit configuration of redistributing routes from protocol A to protocol B is specified. In the latter case, the target protocol (protocol B) is specified, and a policy is used to select the source protocols from which routes may be imported for advertisement. +In both cases, the destination protocol (protocol B) only installs the redistributed routes from the source protocol (protocol A) in its "advertisement RIB view". The redistributed routes are not installed in the FIB (forwarding information base) and therefore are not used for forwarding. ## OpenConfig Approach to Protocol RIB Interconnection @@ -35,6 +36,8 @@ An OpenConfig `routing-policy` is specified along with the connection - allowing It is expected that protocol-specific attributes (e.g., BGP communities) are set by such an import policy, allowing routes that are redistributed to carry information relating to their source (e.g., an IGP route may be tagged with a specific community using policy to indicate its provenance). +In the absense of an import-policy for table-connections, default-import-policy should take effect. In the absence of both, no routes should be allowed to be redistributed. + ## Examples of OpenConfig Network instance ### Example: Aggregate Routes Redistributed to IS-IS Level 2 diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 2f93312ca..16a41451d 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.2.1"; + oc-ext:openconfig-version "4.2.2"; + + revision "2023-11-03" { + description + "Add reference URL for Route Redistribution rules"; + reference "4.2.2"; + } revision "2023-11-01" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index d680f4a9a..ee5b5a740 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.2.1"; + oc-ext:openconfig-version "4.2.2"; + + revision "2023-11-03" { + description + "Add reference URL for Route Redistribution rules"; + reference "4.2.2"; + } revision "2023-11-01" { description @@ -487,6 +493,10 @@ module openconfig-network-instance { for the connection are available for the destination protocol to advertise, or match within its policies."; + reference + "Route Redistribution in OpenConfig Network Instance: + https://github.com/openconfig/public/blob/master/doc/network_instance_redistribution.md#interconnection-of-protocol-ribs"; + leaf src-protocol { type leafref { path "../config/src-protocol"; From 48d0a7dce71389dc399cf5b47cd9d2472ce1b68c Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 20 Nov 2023 13:01:58 -0800 Subject: [PATCH 286/372] Use updated breaking change CI script (#1003) --- .github/workflows/diff.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/diff.yaml b/.github/workflows/diff.yaml index 0a39c6487..1775e77ff 100644 --- a/.github/workflows/diff.yaml +++ b/.github/workflows/diff.yaml @@ -22,7 +22,7 @@ jobs: - name: Install openconfig-ci CLI run: | - go install github.com/openconfig/models-ci/openconfig-ci@c880ed2 + go install github.com/openconfig/models-ci/openconfig-ci@05dd074 - name: Make sure all backward-incompatible changes are covered by version changes. id: check From 4d313589ea2afe6cbe89e2eb4ad14d113f86c00e Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 21 Nov 2023 09:29:39 -0800 Subject: [PATCH 287/372] Introduce refactored aft summary model (#997) * add refactored aft summary model --- release/models/aft/.spec.yml | 2 + .../models/aft/openconfig-aft-summary.yang | 120 ++++++++++++++++++ release/models/network-instance/.spec.yml | 11 +- 3 files changed, 129 insertions(+), 4 deletions(-) create mode 100644 release/models/aft/openconfig-aft-summary.yang diff --git a/release/models/aft/.spec.yml b/release/models/aft/.spec.yml index 6320b2469..fd1079c0b 100644 --- a/release/models/aft/.spec.yml +++ b/release/models/aft/.spec.yml @@ -2,7 +2,9 @@ docs: - yang/aft/openconfig-aft.yang - yang/aft/openconfig-aft-types.yang + - yang/aft/openconfig-aft-summary.yang build: - yang/network-instance/openconfig-network-instance.yang - yang/aft/openconfig-aft-network-instance.yang + - yang/aft/openconfig-aft-summary.yang run-ci: true diff --git a/release/models/aft/openconfig-aft-summary.yang b/release/models/aft/openconfig-aft-summary.yang new file mode 100644 index 000000000..a3fae3a26 --- /dev/null +++ b/release/models/aft/openconfig-aft-summary.yang @@ -0,0 +1,120 @@ +module openconfig-aft-summary { + yang-version "1"; + + namespace "http://openconfig.net/yang/aft-summary"; + + prefix "oc-aftsummary"; + + import openconfig-extensions { prefix "oc-ext"; } + import openconfig-yang-types { prefix "oc-yang-types"; } + import openconfig-policy-types { prefix "oc-pol-types"; } + import openconfig-network-instance { prefix "oc-ni"; } + + organization + "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides summary of aft entry counts per protocol type for each network + instance."; + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-11-09" { + description + "Initial version."; + reference "0.1.0"; + } + + grouping protocols-state { + description + "Grouping for protocol type state."; + + leaf origin-protocol { + description + "Protocol type that keys the protocol list."; + + type identityref { + base "oc-pol-types:INSTALL_PROTOCOL_TYPE"; + } + } + + container counters { + description + "Enclosing container for aft entry counters"; + + leaf aft-entries { + description + "Total number of entries in the aft."; + type oc-yang-types:counter64; + } + } + } + + grouping aft-summary { + description + "A summary of aft entries by protocol type."; + + container protocols { + description + "Enclosing container for a list of protocols"; + list protocol { + key "origin-protocol"; + + description + "Protocol type that keys the aft entry count list."; + + leaf origin-protocol { + type leafref { + path "../state/origin-protocol"; + } + description + "Reference to the protocol type which added the aft entry."; + } + + container state { + description + "State parameters for the aft entry list."; + uses protocols-state; + } + } + } + } + + grouping aft-summary-ipv4 { + description + "Grouping of all aft summaries for ipv4."; + container ipv4-unicast { + description + "Container for ipv4 unicast aft summary by protocol type."; + uses aft-summary; + } + } + + grouping aft-summary-ipv6 { + description + "Grouping of all aft summaries for ipv6."; + container ipv6-unicast { + description + "Container for ipv6 aft counts by protocol type."; + uses aft-summary; + } + } + + augment "/oc-ni:network-instances/oc-ni:network-instance/oc-ni:afts" { + description + "Augment the afts model with the aft summary container."; + + container aft-summaries { + uses aft-summary-ipv4; + uses aft-summary-ipv6; + + description + "Aft summary for the network instance."; + } + } + +} diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 615cf82ef..992b4a491 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -1,18 +1,21 @@ - name: openconfig-network-instance docs: - - yang/network-instance/openconfig-network-instance-types.yang - - yang/network-instance/openconfig-network-instance.yang + - yang/aft/openconfig-aft-network-instance.yang + - yang/aft/openconfig-aft-summary.yang - yang/network-instance/openconfig-evpn-types.yang - yang/network-instance/openconfig-evpn.yang + - yang/network-instance/openconfig-network-instance-types.yang + - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang - - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang - yang/segment-routing/openconfig-segment-routing.yang - yang/rib/openconfig-rib-bgp-ext.yang + build: + - yang/aft/openconfig-aft-network-instance.yang + - yang/aft/openconfig-aft-summary.yang - yang/network-instance/openconfig-network-instance.yang - yang/network-instance/openconfig-programming-errors.yang - - yang/aft/openconfig-aft-network-instance.yang - yang/segment-routing/openconfig-rsvp-sr-ext.yang run-ci: true - name: openconfig-network-instance-bgp-rib-augment From 4e6c1bf524708b8dcd71ac5ffcb1e01dd3b01c4c Mon Sep 17 00:00:00 2001 From: sallylsy <108024270+sallylsy@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:15:37 -0800 Subject: [PATCH 288/372] Add hashing model (#959) * Add traffic load balancing hashing model in OC --------- Co-authored-by: Darren Loher --- release/models/system/.spec.yml | 7 + release/models/system/openconfig-hashing.yang | 366 ++++++++++++++++++ 2 files changed, 373 insertions(+) create mode 100644 release/models/system/openconfig-hashing.yang diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index 9cd6c6222..de5ecc001 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -7,6 +7,7 @@ - yang/system/openconfig-aaa-types.yang - yang/system/openconfig-alarms.yang - yang/system/openconfig-alarm-types.yang + - yang/system/openconfig-hashing.yang - yang/system/openconfig-license.yang - yang/system/openconfig-procmon.yang - yang/system/openconfig-system.yang @@ -32,3 +33,9 @@ - yang/system/openconfig-messages.yang build: - yang/system/openconfig-messages.yang +- name: openconfig-hashing + docs: + - yang/system/openconfig-hashing.yang + build: + - yang/system/openconfig-hashing.yang + run-ci: true diff --git a/release/models/system/openconfig-hashing.yang b/release/models/system/openconfig-hashing.yang new file mode 100644 index 000000000..e4480b22a --- /dev/null +++ b/release/models/system/openconfig-hashing.yang @@ -0,0 +1,366 @@ +module openconfig-hashing { + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/hashing"; + + prefix "oc-hashing"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + import openconfig-system {prefix oc-sys;} + import openconfig-interfaces {prefix oc-intf;} + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing hashing policies that would be referenced by the + interfaces model."; + + + oc-ext:openconfig-version "0.1.0"; + + revision "2023-08-08" { + description "Initial hashing model."; + reference "0.1.0"; + } + + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + grouping hashing-inputs { + description + "Top level container for inputs to be used for hashing policies."; + + leaf ingress-interface { + type boolean; + description + "Include the ingress subinterface identified in the + calculation of the hash."; + } + leaf ip-protocol-type { + type boolean; + description + "Include the IP protocol type in the calculation of the hash."; + } + } + + grouping ipv4-ipv6-inputs-top { + description + "The top level container for ipv4 and ipv6 header + fields used for the hash computation."; + + leaf src-addr { + type boolean; + description + "Use the source address in the calculation of the hash."; + } + + leaf dst-addr { + type boolean; + description + "Use the destination address in the calculation of the hash."; + } + + leaf src-port { + type boolean; + description + "Use the source port from the transport header in the calculation + of the hash."; + } + + leaf dst-port { + type boolean; + description + "Use the destination port from the transport header in the + calculation of the hash."; + } + } + + grouping ipv6-inputs-top { + description + "The top level container specifially for ipv6 header + fields used for the hash computation."; + + leaf flow-label { + type boolean; + description + "Use the flow label in the IPv6 header + to calculate the hash."; + } + } + + grouping hashing-policy-config { + description + "Configuration data for hashing policies."; + + leaf name { + type string; + description + "The name of the hashing policy. + When a configured user-controlled policy is created by the + system, it is instantiated with the same name in the + /system/hashing-policies/hashing-policy/name list."; + } + + leaf seed { + type uint64; + description + "The seed used to initialize the hash algorithm"; + } + + leaf algorithm { + type string; + description + "The name of hash algorithm. This algorithm MUST + be a supported algorithm"; + } + } + + grouping hashing-policy-top { + description + "Top level grouping for hashing configuration and operational state + data."; + + container hashing-policies { + description + "Top level container for hashing, including configuration and + state data."; + + list hashing-policy { + key "name"; + + description + "The list of named policies to be used on the device."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the name of the hashing policy."; + } + container config { + description + "Configurable items at the global hash policy level."; + + uses hashing-policy-config; + } + container state { + config false; + description + "Operational state data at the global hash policy + level."; + + uses hashing-policy-config; + } + + container hash-field-modes { + description + "Container for specifying inputs to be used when + calculating the hash."; + + container config { + description + "Configurable items at the hashing inputs level."; + uses hashing-inputs; + } + container state { + config false; + description + "Operational state data at the hashing + inputs level."; + uses hashing-inputs; + } + + container ipv4 { + description + "The IPv4 fields that should be used to + compute the hash."; + container config { + description + "Configurable data at the hashing + inputs level for IPv4."; + uses ipv4-ipv6-inputs-top; + } + + container state { + config false; + description + "Operational state data at the hashing + inputs level for IPv4."; + uses ipv4-ipv6-inputs-top; + } + } + + container ipv6 { + description + "The IPv6 fields that should be used to + compute the hash."; + + container config { + description + "Configurable data at the hashing + inputs level for IPv6."; + + uses ipv4-ipv6-inputs-top; + uses ipv6-inputs-top; + } + + container state { + config false; + description + "Operational state data at the hashing + inputs level for IPv6."; + + uses ipv4-ipv6-inputs-top; + uses ipv6-inputs-top; + } + } + } + } + } + } + + grouping supported-algorithms-state { + description + "Top-level container for the supported algorithms."; + leaf name { + type string; + description + "Name of the supported algorithm."; + } + leaf description { + type string; + description + "Description of the supported algorithm."; + } + } + grouping supported-algorithms-top { + description + "Top-level container of the supported algorithms for supported + algorithms. The list of algorithms are expected to be defined by + the target device."; + container algorithms { + description + "Container for vendor supported hashing algorithms."; + uses vendor-hashing-algorithms; + } + } + + grouping hashing-algo-top { + description + "Top level container of the supported algorithms for supported + algorithms."; + container hashing-algorithms { + config false; + description + "Container of the supported algorithms for supported + algorithms."; + list hashing-algorithm { + key "name"; + + description + "List of the supported algorithms for supported + algorithms."; + + leaf name { + type leafref { + path ../state/name; + } + description + "Reference to the supported algorithm list key."; + } + + container state { + description + "Operational data for the supported algorithm."; + config false; + + leaf name { + type string; + description + "Name of the supported algorithm."; + } + + leaf description { + type string; + description + "Description of the supported algorithm."; + } + } + } + } + } + + grouping vendor-hashing-algorithms { + description + "Supported hashing algorithms per vender."; + container vendor { + description + "Specify the vendor. Each vendor should have its own set of + supported algorithms. For each supported algorithm, a name + and a description should be defined. An implementation must + augment this model using the schema described in the + vendor_counter_guide reference. + + e.g. + augment /system/hashing/vendor { + container { + container { + uses hashing-algo-top; + } + } + }"; + reference + "https://github.com/openconfig/public/tree/master/doc/vendor_counter_guide.md"; + } + } + + grouping hashing-top { + description + "Top-level container for Hashing algorithms and hashing policies"; + container hashing { + description + "Container for Hashing algorithms and hashing policies"; + uses supported-algorithms-top; + uses hashing-policy-top; + } + } + + augment "/oc-sys:system" { + description + "Augment for Hashing algorithms and hashing policies"; + + uses hashing-top; + } + + augment "/oc-intf:interfaces/oc-intf:interface/oc-intf:config" { + description + "Augment for configuration data hashing policy on the interface."; + leaf hashing-policy { + type leafref { + path "/oc-sys:system/hashing/hashing-policies/hashing-policy/name"; + } + description "The configuration data hashing policy to be used when + hashing packets coming in on the interface."; + } + } + + augment "/oc-intf:interfaces/oc-intf:interface/oc-intf:state" { + description + "Augment for operational data hashing policy on the iinterface."; + leaf hashing-policy { + type leafref { + path "/oc-sys:system/hashing/hashing-policies/hashing-policy/name"; + } + description "The operational data hashing policy to be used when + hashing packets coming in on the interface."; + } + } +} \ No newline at end of file From cd1cfcd263d033ee5f9b10cddde6f823f6cb30e2 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 30 Nov 2023 10:12:25 -0800 Subject: [PATCH 289/372] Clarify interface TESTING mode (#994) * clarify interface TESTING mode --- .../interfaces/openconfig-interfaces.yang | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index 248b5f71d..3c94df5be 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,7 +51,15 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.6.0"; + oc-ext:openconfig-version "3.7.0"; + + revision "2023-11-06" { + description + "Clarify description for admin-status TESTING."; + reference + "3.7.0"; + } + revision "2023-08-29" { description "Add augment for penalty-based additive-increase, exponential-decrease link damping algorithm."; @@ -600,11 +608,16 @@ module openconfig-interfaces { "Not ready to pass packets and not in some test mode."; } enum TESTING { - //TODO: This is generally not supported as a configured - //admin state, though it's in the standard interfaces MIB. - //Consider removing it. description - "In some test mode."; + "The interface should be treated as if in admin-down state for + control plane protocols. In addition, while in TESTING state the + device should remove the interface from aggregate interfaces. + An interface transition to the TESTING state based on a qualification + workflow, or internal device triggered action - such as the gNOI Link + Qualification service"; + reference + "gNOI Link Qualification Service + https://github.com/openconfig/gnoi/blob/main/packet_link_qualification/index.md"; } } //TODO:consider converting to an identity to have the @@ -636,7 +649,7 @@ module openconfig-interfaces { enum TESTING { value 3; description - "In some test mode. No operational packets can + "In test mode. No operational packets can be passed."; } enum UNKNOWN { From 4e1505819d8e6d82c090abbd2e4825551cd567ad Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Wed, 6 Dec 2023 19:56:42 -0800 Subject: [PATCH 290/372] Pipeline-cntr-guide (#961) * Create Integrated-Circuit_pipeline_ggregated_counters_guide.md --------- Co-authored-by: Darren Loher Co-authored-by: Roland Phung --- ...cuit_pipeline_aggregated_counters_guide.md | 72 ++++++++++++++++++ ...openconfig-platform-pipeline-counters.yang | 74 +++++++++++++++++-- 2 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md diff --git a/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md b/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md new file mode 100644 index 000000000..3dfc5087a --- /dev/null +++ b/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md @@ -0,0 +1,72 @@ +# Intergrated Circuit aggregated pipeline counters guide +## Introduction +This guide discusses semantics of different counters provided under the +`openconfig-platform/components/component/integrated-circuit/pipeline-counters` container. +The `INTEGRATED_CIRCUIT` or I-C, in this document refers to the OpenConfig [INTEGRATED_CIRCUIT](https://github.com/openconfig/public/blob/5d38d8531ef9c5b998262207eb6dbdae8968f9fe/release/models/platform/openconfig-platform-types.yang#L346) component type which is typically an ASIC or NPU (or combination of both) that provides packet processing capabilities. + +## Per-block packets/octets counters +[TODO] more detailed description +## Drop packets/octets counters +The `/components/component/integrated-circuit/pipeline-counters/drop` container collects counters related to packets dropped by the `INTEGRATED_CIRCUIT`. +### Aggregated drop counters +These 4 counters should cover all packets dropped by the IC which are not already covered by the /interfaces tree. For example, a packet which is dropped due to QoS policy for WRED should be counted only by the appropriate /interfaces path [dropped-pkts](https://github.com/openconfig/public/blob/5d38d8531ef9c5b998262207eb6dbdae8968f9fe/release/models/qos/openconfig-qos-interfaces.yang#L375). + +Aggregated drop counters are modeled as below: +``` +module: openconfig-platform + +--rw components + +--rw component* [name] + +--rw integrated-circuit + +--ro oc-ppc:pipeline-counters + +--ro oc-ppc:drop + +--ro oc-ppc:state + +--ro oc-ppc:adverse-aggregate? oc-yang:counter64 + +--ro oc-ppc:congestion-aggregate? oc-yang:counter64 + +--ro oc-ppc:packet-processing-aggregate? oc-yang:counter64 + +--ro oc-ppc:urpf-aggregate? oc-yang:counter64 +``` +#### urpf-aggregate + +##### Usability +The increments of this counter are typically signal of some form of attack with spoofed source address. Typically dDOS class. + +#### packet-processing-aggregate + +##### Usability +The increments of this counter are expected during convergence events as well as during stable operation. However rapid increase in drop rate **may** be a signal of network being unhealthy and typically requires further investigation. +The further break down of this counter, if available as vendor extension under `/openconfig-platform:components/component/integrated-circuit/openconfig-platform-pipeline-counters:pipeline-counters/drop/vendor` container could help to further narrow-down cause of drops. + +If prolonged packet drops are found to be caused by lack of FIB entry for incomming packets, this suggest inconsistency between Network Control plane protocols (BGP, IGP, RSVP, gRIBI), FIB calculated by Controller Card and FIB programmed into given Integrated Circuit. + +If implemetation supports `urpf-aggregate` counter, packets discarded due to uRPF should not be counted as `packet-processing-aggregate`. Else, uRPF discarded oacket should be counted against this counter. + +#### congestion-aggregate + + +##### Usability +The increments of this counter are signal of given Integrated Circuit being overhelmed by incomming traffic and complexity of packet processing that is required. + +#### adverse-aggregate +##### Usability +The increments of this counter are generally a signal of a hardware defect (e.g. memory errors or signal integrity issues) or (micro)code software defects. + +#### Queue tail and AQM drops exeption discussion. +Drops associated with QoS queue tail or AQM are the result of egress interface congestion. This is NOT the same as I-C congestion, and should be counted using /interfaces counters as it is expected state from the platform (router) point of view. It may be not expected state from a network design point of view but from the INTEGRATED_CIRCUIT, it is behaving according to design. + +The OpenConfig definition for [congestion-aggregate](https://github.com/openconfig/public/blob/5d38d8531ef9c5b998262207eb6dbdae8968f9fe/release/models/platform/openconfig-platform-pipeline-counters.yang#L1096-L1099) excludes "queue drop counters". It desirable to not count QoS queue drops under this `congestion-aggregate` in order to maintain a clear signal of hitting I-C performance limitations, rather then blend it with basic, simple egress interface speed limitations. + +### Per-Block drop copunters +[TODO] more detailed description for standard OpenConfig drop counters defined for Interface-, Lookup-, Queueing-, Fabric- and Host-Interface- blocks. Also discuss relationship with Control plane traffic packets/octets counters. +### Vendor extensions +Please refer to [Vendor-Specific Augmentation for Pipeline Counter](vendor_counter_guide.md) +## Error counters +These leafs **do not** count **packets or bytes**. +They count error events. + +For example corruption of on chip, HBM or chip external memory buffers (soft-error) which also are not already counted as queue drops for interfaces. + +[TODO] more detailed description +## Control plane traffic packets/octets counters +[TODO] more detailed description. Also discuss relationship with Host-Interface block counters. +### Standard OpenConfig counters +### Vendor extensions diff --git a/release/models/platform/openconfig-platform-pipeline-counters.yang b/release/models/platform/openconfig-platform-pipeline-counters.yang index b7d81c962..9a28d28c2 100644 --- a/release/models/platform/openconfig-platform-pipeline-counters.yang +++ b/release/models/platform/openconfig-platform-pipeline-counters.yang @@ -65,10 +65,16 @@ module openconfig-platform-pipeline-counters { 5 blocks, is to have the abililty to receive all drop counters from all 5 blocks, for example, with one request."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.5.1"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2023-10-08" { + description + "More detail description of pipe-line aggregated drop counters"; + reference "0.5.1"; + } + revision "2023-09-26" { description "Add no-route aggregate drop counter."; @@ -1093,7 +1099,18 @@ module openconfig-platform-pipeline-counters { "This captures the aggregation of all counters where the switch is unexpectedly dropping packets. Occurrence of these drops on a stable (no recent hardware or config changes) and otherwise healthy - switch needs further investigation."; + switch needs further investigation. + This leaf counts packet discarded as result of corrupted + programming state in an INTEGRATED_CIRCUIT or corrupted data + structures of packet descriptors. + + Note: corrupted packets received on ingress interfaces should be counted + in `/interfaces/interface/state/counters/in-errors` and NOT counted as + adverse-aggregate. This is because incoming corrupted packets are NOT + a signal of adverse state of an INTEGRATED_CIRCUIT but rather of an + entity adjacent to the Interface, such as a cable or transceiver). Therefore + such drops SHOULD NOT be counted as adverse-aggregate to preserve + a clean signal of INTEGRATED_CIRCUIT adverse state."; } leaf congestion-aggregate { @@ -1102,7 +1119,31 @@ module openconfig-platform-pipeline-counters { "This tracks the aggregation of all counters where the expected conditions of packet drops due to internal congestion in some block of the hardware that may not be visible in through other congestion - indicators like interface discards or queue drop counters."; + indicators like interface discards or queue drop counters. + + This leaf counts packet discarded as result of exceeding + performance limits of an INTEGRATED_CIRCUT, when it processes + non-corrupted packets using legitimate, non-corrupted programming + state of the INTEGRATED_CIRCUIT. + + The typical example is overloading given IC with higher packet rate (pps) + then given chip can handle. For example, let's assume chip X can process + 3.6Bpps of incoming traffic and 2000 Mpps. However if average incoming + packet size is 150B, at full ingress rate this become 3000Mpps. Hence + 1/3 of packets would be cropped and should be counted against + congestion-aggregate. + + Another example is the case when some INTEGRATED_CIRCUIT internal data bus is + too narrow/slow for handling traffic. For example let's assume chip X needs to send + 3Tbps of traffic to an external buffer memory which has only 2Tbps access I/O. In + this case packets would be discarded, because of congestion of memory I/O bus + which is part of the INTEGRATED_CIRCUIT. Depending on the design of the + INTEGRATED_CIRCUIT, packets could be discarded even if interface queues are + not full, hence this scenario is NOT treated as QoS queue tail-drops nor WRED drops. + + Yet another example is the case where extremely large and long + ACL/filter requires more cycles to process than the INTEGRATED_CIRCUIT + has budgeted. "; } leaf packet-processing-aggregate { @@ -1110,7 +1151,25 @@ module openconfig-platform-pipeline-counters { description "This aggregation of counters represents the conditions in which packets are dropped due to legitimate forwarding decisions (ACL drops, - No Route etc.)"; + No Route etc.) + This counter counts packet discarded as result of processing + non-corrupted packet against legitimate, non-corrupted state + of INTEGRATED_CIRCUIT program (FIB content, ACL content, rate-limiting token-buckets) + which mandate packet drop. The examples of this class of discard are: + - dropping packets which destination address to no match any FIB entry + - dropping packets which destination address matches FIB entry pointing + to discard next-hop (e.g. route to null0) + - dropping packts due to ACL/packet filter decission + - dropping packets due to its TTL = 1 + - dropping packets due to its size exceeds egress interface MTU and + packet can't be fragmented (IPv6 or do not fragment bit is set) + - dropping packets due to uRPF rules (note: packet is counted here and + in separate, urpf-aggregate counter simultaneously) + - etc + + Note:The INTEGRATED_CIRCUIT is doing exactly what it is programmed + to do, and the packet is parsable. + "; } leaf urpf-aggregate { @@ -1119,7 +1178,12 @@ module openconfig-platform-pipeline-counters { "This aggregation of counters represents the conditions in which packets are dropped due to failing uRPF lookup check. This counter and the packet-processing-aggregate counter should be incremented - for each uRPF packet drop."; + for each uRPF packet drop. + This counter counts packet discarded as result of Unicast Reverse + Path Forwarding verification."; + reference + "RFC2827: Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing + RFC3704: Ingress Filtering for Multihomed Networks"; } leaf no-route { From 48a1c13859a56cec2acac936fe4284665c55c786 Mon Sep 17 00:00:00 2001 From: Marius Orehovschi <142224679+marius-ore@users.noreply.github.com> Date: Tue, 12 Dec 2023 02:06:35 +0200 Subject: [PATCH 291/372] Add config and state for individual Ethernet port priority in a LAG (#943) * add config container to LACP aggregate interface member Add config container for LACP aggregate interface member with port-priority and interface. Change /lacp/interfaces/interface/members/member/interface to point to the new leaf /lacp/interfaces/interface/members/member/config/interface. Change /lacp/interfaces/interface/members to config true. This change is not backwards compatible due to breaking change of changing type for list --------- Co-authored-by: Darren Loher Co-authored-by: Rob Shakir --- release/models/lacp/openconfig-lacp.yang | 54 ++++++++++++++++-------- 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/release/models/lacp/openconfig-lacp.yang b/release/models/lacp/openconfig-lacp.yang index 078a6ef3b..832a6a178 100644 --- a/release/models/lacp/openconfig-lacp.yang +++ b/release/models/lacp/openconfig-lacp.yang @@ -26,7 +26,14 @@ module openconfig-lacp { managing aggregate interfaces. It works in conjunction with the OpenConfig interfaces and aggregate interfaces models."; - oc-ext:openconfig-version "1.2.0"; + oc-ext:openconfig-version "2.0.0"; + + revision "2023-12-11" { + description + "Add config container for aggregation member and port-priority leaf under + both config and state"; + reference "2.0.0"; + } revision "2021-07-20" { description @@ -138,20 +145,23 @@ module openconfig-lacp { description "Configuration data for lacp member interfaces"; - //currently a placeholder -- the list of member interfaces - //and their status is considered opstate only - } - - grouping aggregation-lacp-members-state { - description - "Operational status data for the member interfaces"; - leaf interface { type oc-if:base-interface-ref; description "Reference to interface member of the LACP aggregate"; } + leaf port-priority { + type uint16; + description + "Member interface's priority in its aggregate interface."; + } + } + + grouping aggregation-lacp-members-state { + description + "Operational status data for the member interfaces"; + leaf activity { type lacp-activity-type; description "Indicates participant is active or passive"; @@ -234,6 +244,12 @@ module openconfig-lacp { port"; } + leaf partner-port-priority { + type uint16; + description + "Member interface partner's priority in its aggregate interface."; + } + leaf last-change { type oc-types:timeticks64; description @@ -310,28 +326,31 @@ grouping aggregation-lacp-members-statistics { "Top-level grouping for aggregate members list"; container members { - config false; description - "Enclosing container for the list of members interfaces of - the aggregate. This list is considered operational state - only so is labeled config false and has no config container"; + "Configuration and operational state of the aggregate member + interfaces"; list member { key "interface"; description "List of member interfaces and their associated status for - a LACP-controlled aggregate interface. Member list is not - configurable here -- each interface indicates items - its participation in the LAG."; + a LACP-controlled aggregate interface"; leaf interface { type leafref { - path "../state/interface"; + path "../config/interface"; } description "Reference to aggregate member interface"; } + container config { + description + "Operational state data for aggregate members"; + + uses aggregation-lacp-members-config; + } + container state { @@ -340,6 +359,7 @@ grouping aggregation-lacp-members-statistics { description "Operational state data for aggregate members"; + uses aggregation-lacp-members-config; uses aggregation-lacp-members-state; uses aggregation-lacp-members-statistics; } From 2ff8f74f99fff1ab3e729601d0e1d9cc9f3b525f Mon Sep 17 00:00:00 2001 From: Miguel Angel Berumen Jr Date: Thu, 14 Dec 2023 09:45:17 -0800 Subject: [PATCH 292/372] Add state-only leaves of allowed-max-eirp and allowed-max-txpower (#1013) * Update openconfig-wifi-phy.yang Model a state-only leaf of allowed-max-eirp * Update openconfig-wifi-phy.yang Adding radio state leaf for allowed-max-txpower as well. --- release/models/wifi/openconfig-wifi-phy.yang | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 4f76e0060..41d727f61 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.2"; + oc-ext:openconfig-version "1.2.3"; + + revision "2023-11-30" { + description + "Add allowed-max-eirp and allowed-max-txpower radio state leaves."; + reference "1.2.3"; + } revision "2023-05-26" { description @@ -346,6 +352,20 @@ module openconfig-wifi-phy { "Transmit channel-utilization percentage."; } + leaf allowed-max-eirp { + type uint8; + units dBm; + description + "Maximum allowed transmit eirp of this radio + antenna, of the current channel, in dBm."; + } + + leaf allowed-max-txpower { + type uint8; + units dBm; + description + "Maximum allowed transmit power of this radio, of the current channel, in dBm."; + } + leaf obss-rx { type oc-types:percentage; description From d11c015573cfcf6d1ccd79dd7f6518436f482997 Mon Sep 17 00:00:00 2001 From: Roland Phung Date: Fri, 15 Dec 2023 17:49:19 -0800 Subject: [PATCH 293/372] Add reference to doc/terminal-device-properties-guide.md (#1019) --- .../openconfig-terminal-device-properties.yang | 10 +++++++++- .../optical-transport/openconfig-terminal-device.yang | 11 ++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/release/models/devices-manifest/openconfig-terminal-device-properties.yang b/release/models/devices-manifest/openconfig-terminal-device-properties.yang index 2a9c2e506..4e3202c85 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-properties.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-properties.yang @@ -35,10 +35,16 @@ module openconfig-terminal-device-properties { the OTSi (OTSiMC). It also includes (optional) aspects such as filter characterization, CD and DGD tolerance."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; // Revisions + revision "2023-12-13" { + description + "Add reference to the terminal-device-properties-guide.md doc for operational-modes."; + reference "0.1.1"; + } + revision "2022-04-26" { description "Initial manifest fine to extend the information related to the operational modes supported by a terminal device."; @@ -531,6 +537,8 @@ module openconfig-terminal-device-properties { description "Indicates the transceiver's list of supported operational modes and its associated transmission features"; + reference + "https://github.com/openconfig/public/blob/master/doc/terminal-device-properties-guide.md"; list mode-descriptor { key "mode-id"; diff --git a/release/models/optical-transport/openconfig-terminal-device.yang b/release/models/optical-transport/openconfig-terminal-device.yang index bf17ed39c..c9289282a 100644 --- a/release/models/optical-transport/openconfig-terminal-device.yang +++ b/release/models/optical-transport/openconfig-terminal-device.yang @@ -77,7 +77,14 @@ module openconfig-terminal-device { ports per linecard, separate linecards for client and line ports, etc.)."; - oc-ext:openconfig-version "1.9.0"; + oc-ext:openconfig-version "1.9.1"; + + revision "2023-12-13" { + description + "Add reference to the terminal-device-properties-guide.md doc for + operational-mode."; + reference "1.9.1"; + } revision "2021-07-29" { description @@ -1289,6 +1296,8 @@ module openconfig-terminal-device { // Ideally, this leaf should be a leafref to the supported // operational modes, but YANG 1.0 does not allow a r/w // leaf to be a leafref to a r/o leaf. + reference + "https://github.com/openconfig/public/blob/master/doc/terminal-device-properties-guide.md"; } leaf line-port { From 9b9065358192b1dff9b0f2ecf275bb054e8e290d Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 19 Dec 2023 14:09:57 -0800 Subject: [PATCH 294/372] add model-name (#1007) * add model-name --- .../platform/openconfig-platform-common.yang | 8 +++++++- release/models/platform/openconfig-platform.yang | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index d0195804b..afb533067 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.23.0"; + oc-ext:openconfig-version "0.24.0"; + + revision "2023-11-28" { + description + "Add model-name"; + reference "0.24.0"; + } revision "2023-02-13" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 7a1488ba4..bbcf931a6 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.23.0"; + oc-ext:openconfig-version "0.24.0"; + + revision "2023-11-28" { + description + "Add model-name"; + reference "0.24.0"; + } revision "2023-02-13" { description @@ -463,6 +469,14 @@ module openconfig-platform { (field replaceable unit)"; } + leaf model-name { + type string; + description + "A human readable string describing the model of a component. + This string is optional and should only be populated if part-no + is also populated."; + } + leaf clei-code { type string; description From 06d159b634658af6b1a6f72db93017d32b98a539 Mon Sep 17 00:00:00 2001 From: xuqma Date: Thu, 21 Dec 2023 16:04:55 -0800 Subject: [PATCH 295/372] Move BGP community and BGP extended community match-set-options back to policy-definitions/statements/.../bgp-conditions (#982) --- release/models/bgp/openconfig-bgp-policy.yang | 132 +++++++++++++++++- 1 file changed, 129 insertions(+), 3 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index c999d2941..c72619fba 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,18 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.2.0"; + oc-ext:openconfig-version "6.3.0"; + + revision "2023-10-23" { + description + "Revert revision 2019-02-01. + Move match-set-options of BGP community and BGP extended community from + defined-sets/bgp-defined-sets/community-set and + defined-sets/bgp-defined-sets/ext-community-set back to + policy-definitions/statements/.../bgp-conditions + for consistency across sets."; + reference "6.3.0"; + } revision "2023-10-03" { description @@ -244,12 +255,113 @@ module openconfig-bgp-policy { } } + grouping match-community-config { + description + "Configuration data for match conditions on community set"; + + leaf community-set { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/" + + "oc-bgp-pol:community-set/oc-bgp-pol:community-set-name"; + } + description "References a defined community set"; + } + uses oc-rpol:match-set-options-group; + } + + grouping match-community-state { + description + "Operational state data for match conditions on community set"; + } + + grouping match-community-top { + description + "Top-level grouping for match conditions on community set"; + + container match-community-set { + description + "Match a referenced community set according to the logic + defined in the match-set-options leaf"; + + container config { + description + "Configuration data for match conditions on community set"; + + uses match-community-config; + } + + container state { + + config false; + + description + "Operational state data for match conditions on community set"; + + uses match-community-config; + uses match-community-state; + } + } + } + + grouping match-ext-community-config { + description + "Configuration data for match conditions on extended community set"; + + leaf ext-community-set { + type leafref { + path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:ext-community-sets/" + + "oc-bgp-pol:ext-community-set/oc-bgp-pol:ext-community-set-name"; + } + description "References a defined extended community set"; + } + uses oc-rpol:match-set-options-group; + } + + grouping match-ext-community-state { + description + "Operational state data for match conditions on extended community set"; + } + + grouping match-ext-community-top { + description + "Top-level grouping for match conditions on extended community set"; + + container match-ext-community-set { + description + "Match a referenced extended community set according to the logic + defined in the match-set-options leaf"; + + container config { + description + "Configuration data for match conditions on extended community set"; + + uses match-ext-community-config; + } + + container state { + + config false; + + description + "Operational state data for match conditions on extended + community set"; + + uses match-ext-community-config; + uses match-ext-community-state; + } + } + } + grouping bgp-match-set-conditions { description "Condition statement definitions for checking membership in a defined set"; uses match-as-path-top; + uses match-community-top; + uses match-ext-community-top; } grouping community-count-config { @@ -391,6 +503,7 @@ module openconfig-bgp-policy { } leaf community-set { + status deprecated; type leafref { path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:community-sets/" + @@ -401,6 +514,7 @@ module openconfig-bgp-policy { } leaf ext-community-set { + status deprecated; type leafref { path "/oc-rpol:routing-policy/oc-rpol:defined-sets/" + "oc-bgp-pol:bgp-defined-sets/oc-bgp-pol:ext-community-sets/" + @@ -477,7 +591,13 @@ module openconfig-bgp-policy { removed."; } - uses oc-rpol:match-set-options-group; + leaf match-set-options { + status deprecated; + type oc-pol-types:match-set-options-type; + description + "Optional parameter that governs the behaviour of the + match operation"; + } } grouping community-set-state { @@ -553,7 +673,13 @@ module openconfig-bgp-policy { removed."; } - uses oc-rpol:match-set-options-group; + leaf match-set-options { + status deprecated; + type oc-pol-types:match-set-options-type; + description + "Optional parameter that governs the behaviour of the + match operation"; + } } grouping ext-community-set-state { From 3ae632da180ff59b68a1a091e4094bd8482d3df5 Mon Sep 17 00:00:00 2001 From: Alex Webster <31635844+awebsters@users.noreply.github.com> Date: Tue, 26 Dec 2023 14:32:02 -0500 Subject: [PATCH 296/372] isis policy metric type leafs fixed for action and condition (#989) * isis policy metric type leafs fixed for action and condition --------- Co-authored-by: Wen Bo Li <50884368+wenovus@users.noreply.github.com> --- .../models/isis/openconfig-isis-policy.yang | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/release/models/isis/openconfig-isis-policy.yang b/release/models/isis/openconfig-isis-policy.yang index 21ee06eb7..caa4c1278 100644 --- a/release/models/isis/openconfig-isis-policy.yang +++ b/release/models/isis/openconfig-isis-policy.yang @@ -26,7 +26,13 @@ module openconfig-isis-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2023-11-02" { + description + "Fixing metric type leafs for action and condition branches."; + reference "0.8.0"; + } revision "2023-04-28" { description @@ -151,10 +157,10 @@ module openconfig-isis-policy { within it"; } - leaf set-metric-type { + leaf match-metric-type { type isis-types:metric-type; description - "Set the type of the route to redistribute to INTERNAL or EXTERNAL"; + "Matches the type of the route to redistribute to INTERNAL or EXTERNAL"; } } @@ -195,20 +201,16 @@ module openconfig-isis-policy { } leaf set-metric-type { - type isis-types:level-number; - status deprecated; + type isis-types:metric-type; description - "Formerly this leaf sets the type of metric that is to be specified - when the set-metric leaf is specified. This leaf is DEPRECATED - due to being assigned the wrong type. Use set-metric-style-type - instead."; + "This leaf sets the type of metric that is to be specified + when the set-metric leaf is specified"; } leaf set-metric-style-type { type isis-types:metric-style; description - "Set the type of metric that is to be specified when the - set metric leaf is specified"; + "Set the style of the metric"; } leaf set-metric { From af9d6b6b477f3d01fe55d4dc7eb26ec43f989c7a Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Wed, 27 Dec 2023 11:42:33 -0700 Subject: [PATCH 297/372] Remove unused chassis-id for P4RT (#1020) * (M) p4rt/openconfig-p4rt.yang - Remove unused chassis-id --- release/models/p4rt/openconfig-p4rt.yang | 34 +++++------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/release/models/p4rt/openconfig-p4rt.yang b/release/models/p4rt/openconfig-p4rt.yang index c6f615445..cc17fa66a 100644 --- a/release/models/p4rt/openconfig-p4rt.yang +++ b/release/models/p4rt/openconfig-p4rt.yang @@ -26,7 +26,13 @@ module openconfig-p4rt { The P4RT protocol specification is linked from https://p4.org/specs/ under the P4Runtime heading."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "1.0.0"; + + revision 2023-12-13 { + description + "Remove unused chassis id"; + reference "1.0.0"; + } revision 2022-08-19 { description @@ -104,18 +110,6 @@ module openconfig-p4rt { } } - grouping p4rt-chassis-config { - description - "Config regarding P4RT use cases which corresponds to the global device hardware package"; - - leaf id { - type uint32; - description - "An identifier used for the root of oc-p4rt:node-id. It is used to - indicate which oc-p4rt:node-id's belong to the same device"; - } - } - grouping p4rt-ic-config { description "Integrated-circuit specific configuration that is applicable to devices @@ -176,20 +170,6 @@ module openconfig-p4rt { uses p4rt-ic-config; } - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:chassis/oc-platform:config" { - description - "Add P4RT chassis config to platform chassis component."; - uses p4rt-chassis-config; - } - - augment "/oc-platform:components/oc-platform:component/" + - "oc-platform:chassis/oc-platform:state" { - description - "Add P4RT chassis state to platform chassis component."; - uses p4rt-chassis-config; - } - } // rpc statements From 6aca77481ebd56fc4ef2f7ad2263f8ecf295b838 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Fri, 12 Jan 2024 11:35:01 -0800 Subject: [PATCH 298/372] change aft summary from counter64 to uint64 (#1026) * change aft summary from counter64 to uint64 * remove unused module --- release/models/aft/openconfig-aft-summary.yang | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/release/models/aft/openconfig-aft-summary.yang b/release/models/aft/openconfig-aft-summary.yang index a3fae3a26..8a4cc1730 100644 --- a/release/models/aft/openconfig-aft-summary.yang +++ b/release/models/aft/openconfig-aft-summary.yang @@ -6,7 +6,6 @@ module openconfig-aft-summary { prefix "oc-aftsummary"; import openconfig-extensions { prefix "oc-ext"; } - import openconfig-yang-types { prefix "oc-yang-types"; } import openconfig-policy-types { prefix "oc-pol-types"; } import openconfig-network-instance { prefix "oc-ni"; } @@ -21,7 +20,13 @@ module openconfig-aft-summary { "This module provides summary of aft entry counts per protocol type for each network instance."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; + + revision "2024-01-12" { + description + "Change count of entries from counter64 to uint64."; + reference "0.2.0"; + } revision "2023-11-09" { description @@ -49,7 +54,7 @@ module openconfig-aft-summary { leaf aft-entries { description "Total number of entries in the aft."; - type oc-yang-types:counter64; + type uint64; } } } From f3daa9d46f8b907bdab5a4cbe7eca4beee23519b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Wed, 17 Jan 2024 19:18:15 +0100 Subject: [PATCH 299/372] Update openconfig-transport-types.yang (#1011) Added new PMD types * add ETH_100GBASE-CR4 and ETH_40GBASE-CR4 with references --- .../openconfig-transport-types.yang | 50 +++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index 0818d2d35..eb1421b7e 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,16 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.20.0"; + oc-ext:openconfig-version "0.21.0"; + + revision "2024-01-16" { + description + "Added form factors QSFP28_DD and CSFP. + Added new PMDs: ETH_100GBASE_ER4L (MSA 100GBASE-ER4 Lite), + ETH_1GBASE_LX10. + Added References for 100GBASE-CR4 and 40GGBASE-CR4 for DACs"; + reference "0.21.0"; + } revision "2023-08-03" { description @@ -831,6 +840,14 @@ module openconfig-transport-types { channels"; } + identity QSFP28_DD { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "QSFP-DD with electrical interfaces consisting of 8 lanes that operate at up to + 25 Gbps with NRZ modulation"; + reference "http://qsfp-dd.com"; + } + identity QSFP56 { base TRANSCEIVER_FORM_FACTOR_TYPE; description @@ -884,6 +901,16 @@ module openconfig-transport-types { up to 16 Gb/s signals, including 10 GbE and OTU2"; } + identity CSFP { + base TRANSCEIVER_FORM_FACTOR_TYPE; + description + "Compact Small form-factor pluggable transceiver. It is a version + of SFP with the same mechanical form factor allowing two independent + bidirectional channels per port."; + } + + + identity SFP28 { base TRANSCEIVER_FORM_FACTOR_TYPE; description @@ -989,6 +1016,12 @@ module openconfig-transport-types { "Ethernet compliance codes (PMD) supported by transceivers"; } + identity ETH_1000BASE_LX10 { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: ETH_1000BASE_LX10"; + reference "802.3ah-2004(CL59)"; + } + identity ETH_10GBASE_LRM { base ETHERNET_PMD_TYPE; description "Ethernet compliance code: 10GBASE_LRM"; @@ -1016,7 +1049,10 @@ module openconfig-transport-types { identity ETH_40GBASE_CR4 { base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 40GBASE_CR4"; + description "Ethernet compliance code: 40GBASE_CR4. + This PMD is used in Direct Attach Cables (DAC) + and Active Optical Cables (AOC)"; + reference "IEEE 802.3ba 40GBASE-CR4"; } identity ETH_40GBASE_SR4 { @@ -1074,6 +1110,11 @@ module openconfig-transport-types { description "Ethernet compliance code: 100GBASE_LR4"; } + identity ETH_100GBASE_ER4L { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 100GBASE_ER4L"; + } + identity ETH_100GBASE_ER4 { base ETHERNET_PMD_TYPE; description "Ethernet compliance code: 100GBASE_ER4"; @@ -1096,7 +1137,10 @@ module openconfig-transport-types { identity ETH_100GBASE_CR4 { base ETHERNET_PMD_TYPE; - description "Ethernet compliance code: 100GBASE_CR4"; + description "Ethernet compliance code: 100GBASE_CR4. + This PMD is used in Direct Attach Cables (DAC) + and Active Optical Cables (AOC)"; + reference "IEEE 802.3bj 100GBASE-CR4"; } identity ETH_100GBASE_FR { From 125c5c3f421c4747873f50946c97bbe00a965123 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 17 Jan 2024 13:21:07 -0800 Subject: [PATCH 300/372] add uptime and promote system to v1 (#985) * add uptime and promote system to v1 --- release/models/system/openconfig-system.yang | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index aa9589c02..aec2d5b87 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,7 +47,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.17.1"; + oc-ext:openconfig-version "1.0.0"; + +revision "2023-10-26" { + description + "Add up-time leaf and promote module to version 1.0."; + reference "1.0.0"; + } revision "2023-06-16" { description @@ -371,6 +377,14 @@ module openconfig-system { "The current system date and time."; } + leaf up-time { + type oc-types:timeticks64; + units "nanoseconds"; + description + "The amount of time since the network operating system was + initialized."; + } + leaf boot-time { type oc-types:timeticks64; units "nanoseconds"; From aa1a5468542074b608a65aab9079b9b16ec164a5 Mon Sep 17 00:00:00 2001 From: Seng Leung Date: Wed, 17 Jan 2024 21:58:29 +0000 Subject: [PATCH 301/372] Change ipv6-address-zoned typedef to W3C standard regex pattern (#1031) Fixes #1030 --- release/models/types/openconfig-inet-types.yang | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/release/models/types/openconfig-inet-types.yang b/release/models/types/openconfig-inet-types.yang index 3d3ed425e..ff74c4287 100644 --- a/release/models/types/openconfig-inet-types.yang +++ b/release/models/types/openconfig-inet-types.yang @@ -31,7 +31,14 @@ module openconfig-inet-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + + revision "2024-01-05" { + description + "Change ipv6-address-zoned typedef to conform to W3C standard + regex pattern."; + reference "0.7.0"; + } revision "2023-02-06" { description @@ -198,7 +205,7 @@ module openconfig-inet-types { pattern // Must support compression through different lengths // therefore this regexp is complex. - '^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + + '(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' + '([0-9a-fA-F]{1,4}:){1,7}:|' + '([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' + '([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' + @@ -207,7 +214,7 @@ module openconfig-inet-types { '([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' + '[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' + ':((:[0-9a-fA-F]{1,4}){1,7}|:)' + - ')(%[a-zA-Z0-9_]+)$'; + ')(%[a-zA-Z0-9_]+)'; oc-ext:posix-pattern // Must support compression through different lengths // therefore this regexp is complex. From ce2ebe9ba05e75653c00669e15660836b4004e21 Mon Sep 17 00:00:00 2001 From: "Missae W. Sasaya" Date: Fri, 19 Jan 2024 18:33:09 -0300 Subject: [PATCH 302/372] Configuring send-community per AFI-SAFI at neighbor/peer-group (#809) (#976) Co-authored-by: Darren Loher --- .../openconfig-bgp-common-multiprotocol.yang | 20 ++++++++++++++++++- .../bgp/openconfig-bgp-common-structure.yang | 11 +++++++++- release/models/bgp/openconfig-bgp-common.yang | 11 +++++++++- release/models/bgp/openconfig-bgp-global.yang | 11 +++++++++- .../models/bgp/openconfig-bgp-neighbor.yang | 11 +++++++++- .../models/bgp/openconfig-bgp-peer-group.yang | 11 +++++++++- release/models/bgp/openconfig-bgp.yang | 11 +++++++++- 7 files changed, 79 insertions(+), 7 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index e85eca584..445649090 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,16 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description @@ -254,6 +263,15 @@ submodule openconfig-bgp-common-multiprotocol { "This leaf indicates whether the AFI-SAFI is enabled for the neighbor or group"; } + + leaf-list send-community-type { + type oc-bgp-types:community-type; + description + "Specify which types of community should be sent to the + neighbor or group. The default is to not send the + community attribute. This takes precedence over the neighbor + or group configuration"; + } } grouping bgp-common-mp-all-afi-safi-list-contents { diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 92ea39425..2f5b643e6 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,16 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 07d38a027..9d02628e2 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,16 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 761becbf1..c5d42468b 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -27,7 +27,16 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 830c76d91..78db8b378 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,16 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 84c12d090..077dd8874 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,16 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 6d28c872e..658224d7e 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,16 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.5.0"; + oc-ext:openconfig-version "9.6.0"; + + revision "2023-11-02" { + description + "Fix revision '2023-03-31': send-community-type was added to the + wrong grouping. + Allow configuring send-community per AFI-SAFI at + neighbor/peer-group."; + reference "9.6.0"; + } revision "2023-11-01" { description From 6836243ecfc70a5991d3bc16dda038d1406bdd8c Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 25 Jan 2024 13:11:41 -0800 Subject: [PATCH 303/372] Add link bandwidth community using schema string regex style (#1027) (M) release/models/bgp/openconfig-bgp-types.yang * Add bgp link-bandwidth community type --- release/models/bgp/openconfig-bgp-errors.yang | 8 ++++- release/models/bgp/openconfig-bgp-types.yang | 29 ++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index d4b9ba5a8..395fb2d3f 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,13 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "5.5.0"; + oc-ext:openconfig-version "5.6.0"; + + revision "2023-12-26" { + description + "Add regex for bgp link bandwidth"; + reference "5.6.0"; + } revision "2023-09-06" { description diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index 447537c5d..b2ce46ef7 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -25,7 +25,13 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "5.5.0"; + oc-ext:openconfig-version "5.6.0"; + + revision "2023-12-26" { + description + "Add regex for bgp link bandwidth"; + reference "5.6.0"; + } revision "2023-09-06" { description @@ -595,6 +601,27 @@ module openconfig-bgp-types { '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + '[1-9][0-9]{1,8}|[0-9])$'; } + type string { + // Extended Link Bandwidth Community + // link-bandwidth:<2 byte asn>: + // Example: link-bandwidth:20:100M + pattern 'link-bandwidth:' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9]):' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9])(k|K|M|G)?'; + oc-ext:posix-pattern '^link-bandwidth:' + + '(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}' + + '|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{1,3}|[0-9])$' + + '(429496729[0-5]|42949672[0-8][0-9]|4294967[0-1][0-9]{2}' + + '|429496[0-6][0-9]{3}|42949[0-5][0-9]{4}|4294[0-8][0-9]{5}|' + + '429[0-3][0-9]{6}|42[0-8][0-9]{7}|4[0-1][0-9]{8}|[1-3][0-9]{9}|' + + '[1-9][0-9]{1,8}|[0-9])(k|K|M|G)?$'; + } + } description "Type definition for extended community attributes. In the case that From f46ca2cc6a2e5832cb0bd03d30c78b735129063c Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Tue, 30 Jan 2024 13:43:29 -0800 Subject: [PATCH 304/372] Multipath link bandwidth enabled (#1028) * BGP link bandwidth multipath enable at global level --- .../openconfig-bgp-common-multiprotocol.yang | 9 ++- .../bgp/openconfig-bgp-common-structure.yang | 9 ++- release/models/bgp/openconfig-bgp-common.yang | 56 ++++++++++++++++++- release/models/bgp/openconfig-bgp-global.yang | 9 ++- .../models/bgp/openconfig-bgp-neighbor.yang | 9 ++- .../models/bgp/openconfig-bgp-peer-group.yang | 9 ++- release/models/bgp/openconfig-bgp.yang | 9 ++- 7 files changed, 103 insertions(+), 7 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 445649090..514b757d6 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,8 +24,15 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description "Fix revision '2023-03-31': send-community-type was added to the diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 2f5b643e6..6c9c9610e 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,14 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 9d02628e2..461c3eceb 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,14 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description @@ -620,6 +627,21 @@ submodule openconfig-bgp-common { container ebgp { description "Multipath parameters for eBGP"; + container link-bandwidth-ext-community { + description + "Usage of DMZ Link-Bandwidth extended community"; + container config { + description + "Configuration parameters relating to usage of link-bandwidth"; + uses bgp-common-use-multiple-paths-link-bandwidth-config; + } + container state { + config false; + description + "State information relating to usage of link-bandwidth"; + uses bgp-common-use-multiple-paths-link-bandwidth-config; + } + } container config { description "Configuration parameters relating to eBGP multipath"; @@ -636,6 +658,21 @@ submodule openconfig-bgp-common { container ibgp { description "Multipath parameters for iBGP"; + container link-bandwidth-ext-community { + description + "Usage of DMZ Link-Bandwidth extended community"; + container config { + description + "Configuration parameters relating to usage of link-bandwidth"; + uses bgp-common-use-multiple-paths-link-bandwidth-config; + } + container state { + config false; + description + "State information relating to usage of link-bandwidth"; + uses bgp-common-use-multiple-paths-link-bandwidth-config; + } + } container config { description "Configuration parameters relating to iBGP multipath"; @@ -651,6 +688,23 @@ submodule openconfig-bgp-common { } } + grouping bgp-common-use-multiple-paths-link-bandwidth-config { + description + "Parameters controlling usage of of DMZ Link-Bandwidth + extended community in pultipath RIB/FIB formation"; + leaf enabled { + type boolean; + description + "When set to TRUE, BGP multiplepath shall distributed traffic + load among contributing routes proportionally to value of + Local Administrator subfield of link-bandwidth extended + community [draft-ietf-idr-link-bandwidth-07]. + This leaf has no effect if BGP multi-path is disabled or + if maximum-path attribute of BGP multi-path value is set + to 1"; + } + } + grouping bgp-common-use-multiple-paths-ebgp-config { description "Configuration parameters relating to multipath for eBGP"; diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index c5d42468b..980b26197 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -27,7 +27,14 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 78db8b378..1070c8429 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,14 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 077dd8874..f4eafff75 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,14 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 658224d7e..810a41898 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,14 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.6.0"; + oc-ext:openconfig-version "9.7.0"; + + revision "2023-12-28" { + description + "Add support for controling use of link-bandwidth extended + community for BGP multipath."; + reference "9.7.0"; + } revision "2023-11-02" { description From 35614de36d435c3d5efa5a119bd9aba367c9762f Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:19:37 -0800 Subject: [PATCH 305/372] [CI]: Run ygnmi after pyangbind to avoid threadkill (#1045) Based on results in https://github.com/openconfig/public/pull/1043 it suggests an OOM issue. --- cloudbuild.yaml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index 4a3d82970..cd99ff204 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -229,14 +229,11 @@ steps: waitFor: ['validator prep', 'go path creation', 'oc-pyang'] id: 'goyang-ygot' -############### YGNMI ############### +############### PYANG ############### - name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' - args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/ygnmi/test.sh"] + args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyang/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] - volumes: - - name: 'gopath' - path: /go env: - 'GOPATH=/go' - '_PR_NUMBER=$_PR_NUMBER' @@ -244,13 +241,16 @@ steps: - 'COMMIT_SHA=$COMMIT_SHA' - '_REPO_SLUG=$_REPO_SLUG' - 'BRANCH_NAME=$BRANCH_NAME' - waitFor: ['validator prep', 'go path creation', 'oc-pyang'] - id: 'ygnmi' + volumes: + - name: 'gopath' + path: /go + waitFor: ['validator prep', 'oc-pyang'] + id: 'pyang' -############### PYANG ############### +############### PYANGBIND ############### - name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' - args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyang/test.sh'] + args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyangbind/test.sh'] secretEnv: ['GITHUB_ACCESS_TOKEN'] env: - 'GOPATH=/go' @@ -263,13 +263,16 @@ steps: - name: 'gopath' path: /go waitFor: ['validator prep', 'oc-pyang'] - id: 'pyang' + id: 'pyangbind' -############### PYANGBIND ############### +############### YGNMI ############### - name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' entrypoint: 'bash' - args: ['-c', '/go/src/github.com/openconfig/models-ci/validators/pyangbind/test.sh'] + args: ['-c', "/go/src/github.com/openconfig/models-ci/validators/ygnmi/test.sh"] secretEnv: ['GITHUB_ACCESS_TOKEN'] + volumes: + - name: 'gopath' + path: /go env: - 'GOPATH=/go' - '_PR_NUMBER=$_PR_NUMBER' @@ -277,11 +280,8 @@ steps: - 'COMMIT_SHA=$COMMIT_SHA' - '_REPO_SLUG=$_REPO_SLUG' - 'BRANCH_NAME=$BRANCH_NAME' - volumes: - - name: 'gopath' - path: /go - waitFor: ['validator prep', 'oc-pyang'] - id: 'pyangbind' + waitFor: ['validator prep', 'go path creation', 'oc-pyang', 'pyangbind'] # wait for pyangbind to avoid possible OOM. + id: 'ygnmi' ############### COMPATIBILITY REPORT ############### - name: 'us-west1-docker.pkg.dev/$PROJECT_ID/models-ci/models-ci-image' From 0ba98fd72f224977767e1e143c7665966ab4b985 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Thu, 8 Feb 2024 15:42:37 -0800 Subject: [PATCH 306/372] Enable CI with new settings (#1047) --- cloudbuild.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/cloudbuild.yaml b/cloudbuild.yaml index cd99ff204..1c72a5313 100644 --- a/cloudbuild.yaml +++ b/cloudbuild.yaml @@ -303,6 +303,7 @@ steps: timeout: 600s options: machineType: 'E2_HIGHCPU_32' + logging: CLOUD_LOGGING_ONLY availableSecrets: inline: From 8387d23434be80b419375c4cc80c45546163e2e2 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 14 Feb 2024 11:10:24 -0800 Subject: [PATCH 307/372] add peer_address to bgp-next-hop-type (#971) --- release/models/bgp/openconfig-bgp-policy.yang | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index c72619fba..169f78652 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,13 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.3.0"; + oc-ext:openconfig-version "6.4.0"; + + revision "2023-12-19" { + description + "Add PEER_ADDRESS to bgp-next-hop-type."; + reference "6.4.0"; + } revision "2023-10-23" { description @@ -175,6 +181,11 @@ module openconfig-bgp-policy { description "special designation for local router's own address, i.e., next-hop-self"; } + enum PEER_ADDRESS { + description "The ip address of the peer should be used. + This enum is efficient to use when setting the next hop + in a policy applied to a peer group."; + } } } description From 1b9c817691b8e4191ca76e1c3db80d060271a1b1 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Thu, 15 Feb 2024 13:43:58 -0500 Subject: [PATCH 308/372] Add DEFAULT_INSTANCE under connection-points endpoints (#1017) * Expand when statement under /network-instances/network-instance/connection-points/connection-point/endpoints to include oc-ni-types:DEFAULT_INSTANCE' --- .../openconfig-network-instance-l2.yang | 8 ++++++- .../openconfig-network-instance.yang | 24 ++++++++++--------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 16a41451d..e983abef0 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,13 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.2.2"; + oc-ext:openconfig-version "4.3.0"; + + revision "2023-12-13" { + description + "Expand when statement for connection-points endpoints"; + reference "4.3.0"; + } revision "2023-11-03" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index ee5b5a740..b292cfb2b 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,13 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.2.2"; + oc-ext:openconfig-version "4.3.0"; + + revision "2023-12-13" { + description + "Expand when statement for connection-points endpoints"; + reference "4.3.0"; + } revision "2023-11-03" { description @@ -699,7 +705,8 @@ module openconfig-network-instance { container endpoints { when "../../../config/type = 'oc-ni-types:L2P2P' " + - "or ../../../config/type = 'oc-ni-types:L2VSI'" { + "or ../../../config/type = 'oc-ni-types:L2VSI'" + + "or ../../../config/type = 'oc-ni-types:DEFAULT_INSTANCE'" { description "Configuration parameters to associate interfaces into a common group for use in Layer 2 network @@ -801,15 +808,10 @@ module openconfig-network-instance { } } container vxlan { - when "../config/type = 'oc-ni-types:VXLAN'" { - description - "Only include the vxlan configuration when - the endpoint is specified to be vxlan"; - } - description - "Configuration and operational state parameters - relating to a VXLAN tunnel end-point interface"; - uses oc-evpn:evpn-overlays-grp-top; + description + "Configuration and operational state parameters + relating to a VXLAN tunnel end-point interface"; + uses oc-evpn:evpn-overlays-grp-top; } } } From dc47b49ce41a453a4fa5e829166b823dab8012b8 Mon Sep 17 00:00:00 2001 From: Nathan Kitchen Date: Fri, 16 Feb 2024 12:19:40 -0800 Subject: [PATCH 309/372] Change type of NTP offset to int64 (#1023) * Change NTP offset, root-delay, and root-dispersion to int64 nanoseconds (#1022) This change is not backwards compatible, so the major version is incremented. --- release/models/system/openconfig-system.yang | 49 +++++++++++--------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index aec2d5b87..e63b5859c 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,9 +47,16 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "2.0.0"; -revision "2023-10-26" { + revision "2023-12-20" { + description + "Change NTP offset, root-delay, and root-dispersion to int64 nanoseconds, + and update their descriptions for accuracy and clarity."; + reference "2.0.0"; + } + + revision "2023-10-26" { description "Add up-time leaf and promote module to version 1.0."; reference "1.0.0"; @@ -767,39 +774,35 @@ revision "2023-10-26" { } leaf root-delay { - type uint32; - // TODO: reconsider units for these values -- the spec defines - // rootdelay and rootdisperson as 2 16-bit integers for seconds - // and fractional seconds, respectively. This gives a - // precision of ~15 us (2^-16). Using milliseconds here based - // on what implementations typically provide and likely lack - // of utility for less than millisecond precision with NTP - // time sync. - units "milliseconds"; - description - "The round-trip delay to the server, in milliseconds."; + type int64; + units "nanoseconds"; + description + "The total round-trip delay to the reference clock, in nanoseconds."; reference "RFC 5905 - Network Time Protocol Version 4: Protocol and - Algorithms Specification"; + Algorithms Specification, Section 7.3"; } leaf root-dispersion { - type uint64; - units "milliseconds"; + type int64; + units "nanoseconds"; description - "Dispersion (epsilon) represents the maximum error inherent - in the measurement"; + "The maximum error inherent in the measurement, accumulated over the + stratum levels from the reference clock."; reference "RFC 5905 - Network Time Protocol Version 4: Protocol and - Algorithms Specification"; + Algorithms Specification, Section 4"; } leaf offset { - type uint64; - units "milliseconds"; + type int64; + units "nanoseconds"; description "Estimate of the current time offset from the peer. This is - the time difference between the local and reference clock."; + the time difference of the peer's clock minus the local clock."; + reference + "RFC 5905 - Network Time Protocol Version 4: Protocol and + Algorithms Specification, Section 8"; } leaf poll-interval { @@ -1294,4 +1297,4 @@ revision "2023-10-26" { // data definition statements uses system-top; -} \ No newline at end of file +} From aff3e9e8dbc0b3a4f23277ed6a4430e5bee88aae Mon Sep 17 00:00:00 2001 From: sallylsy <108024270+sallylsy@users.noreply.github.com> Date: Fri, 16 Feb 2024 12:33:16 -0800 Subject: [PATCH 310/372] Update loopback-mode type (#1034) * Add interface loopback-mode types for ASIC PHY and MAC --------- Co-authored-by: Darren Loher --- .../openconfig-transport-types.yang | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index eb1421b7e..db7f711a0 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.21.0"; + oc-ext:openconfig-version "0.22.0"; + + revision "2024-01-17" { + description + "Update loopback-mode types."; + reference "0.22.0"; + } revision "2024-01-16" { description @@ -190,15 +196,41 @@ module openconfig-transport-types { } enum FACILITY { description - "A loopback which directs traffic normally transmitted - on the port back to the device as if received on the same - port from an external source."; + "A port internal loopback at ASIC level. The loopback directs + traffic normally transmitted on the port back to the device as + if received on the same port from an external source. Note this + mode is used when internal loopback does NOT specify MAC or PHY."; } enum TERMINAL { description - "A loopback which directs traffic received from an external - source on the port back out the transmit side of the same - port."; + "A port external loopback at ASIC level. The loopback which + directs traffic received from an external source on the port + back out the transmit side of the same port. Note this mode is + used when external loopback does NOT specify MAC or PHY"; + } + enum ASIC_PHY_LOCAL { + description + "A port internal loopback at PHY module. The loopback directs + traffic normally transmitted on the port back to the device as + if received on the same port from an external source."; + } + enum ASIC_PHY_REMOTE { + description + "A port external loopback at PHY module. The loopback which + directs traffic received from an external source on the port + back out the transmit side of the same port."; + } + enum ASIC_MAC_LOCAL { + description + "A port internal loopback at MAC module. The loopback directs + traffic normally transmitted on the port back to the device as + if received on the same port from an external source."; + } + enum ASIC_MAC_REMOTE { + description + "A port external loopback at MAC module. The loopback which + directs traffic received from an external source on the port + back out the transmit side of the same port."; } } default NONE; From fca6245c796200211aba6928c12d06ab9bcf77c7 Mon Sep 17 00:00:00 2001 From: sachendras <44847441+sachendras@users.noreply.github.com> Date: Wed, 21 Feb 2024 16:41:46 -0800 Subject: [PATCH 311/372] Clarify forwarding-viable and how an implementation should implement it. (#1032) * Update openconfig-if-sdn-ext.yang Clarify the forwarding-viable leaf and how an implementation should implement it. --------- Co-authored-by: rszarecki <46606165+rszarecki@users.noreply.github.com> Co-authored-by: Darren Loher --- .../interfaces/openconfig-if-sdn-ext.yang | 49 ++++++++++++++++--- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/release/models/interfaces/openconfig-if-sdn-ext.yang b/release/models/interfaces/openconfig-if-sdn-ext.yang index fb4cfeef0..a96e1b823 100644 --- a/release/models/interfaces/openconfig-if-sdn-ext.yang +++ b/release/models/interfaces/openconfig-if-sdn-ext.yang @@ -21,7 +21,13 @@ module openconfig-if-sdn-ext { oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; + + revision 2024-02-21 { + description + "Initial revision."; + reference "0.2.0"; + } revision 2021-03-30 { description @@ -47,11 +53,42 @@ module openconfig-if-sdn-ext { This is used by an external programming entity to disable an interface (usually part of an aggregate) for the purposes of forwarding traffic. This allows a logical aggregate to continue to be - used with partial capacity, for example. Note that setting - `forwarding-viable = false` is not equivalent to - administratively disabling the interface -- in particular, the - interface is expected to participate in L2 protocols such as - LLDP or LACP even if it blocked from forwarding traffic."; + used with partial capacity. Setting `forwarding-viable = false` is not + equivalent to administratively disabling the interface. + Some rules to follow when an interface or aggregate interface is set for + Forwarding-viable=False: + 1. Aggregate interface '/interfaces/interface/aggregation/state/min-links' + checks should be evaluated based on + `/interfaces/interface/state/oper-status`. 'min-links' should not be + affected by the use of forwarding viable. + + 2. L2 protocols like LLDP and LACP must be processed normally on + transmit and receive on such ports/bundles. IS-IS PDUs should be + handled as per the requirements for L3 packets below. + + 3. L3 packets must not be transmitted on the interface. + + 4. Received L3 packets must be processed normally. Received data-plane + traffic will continue to forwarded to its destination post FIB lookup. + Received control-plane traffic must also be processed normally. + + 5. It is possible that the dead-interval or hold-down timer of L3 + protocols like IS-IS/BGP on the peer router may expire taking down the + adjacency or peering on that connection. However, the peer may still + continue to transmit packets which are received by the local device. + These received packet should continue to be processed normally as + per rule #4 above. + + For example, if the peer's forwarding table is programmed using gRIBI + by an external controller, the local device will continue to receive + packets. + + 6. An implementation should follow rule #3 even when the subject + interface on the local device is the last resort of communication for a + given destination. For example, the only nexthop for a destination is + an aggregate interface which has all member interfaces set to + forwarding-viable = false. In this scenario all L3 packets for that + destination will be dropped."; } } From a0ea59366ef4ea56d746b8550fffe0633ff26101 Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Thu, 22 Feb 2024 10:51:38 -0800 Subject: [PATCH 312/372] Clarification in description of last-prefix-limit-exceeded (#1053) * clarification in description of last-prefix-limit-exceeded --- .../bgp/openconfig-bgp-common-multiprotocol.yang | 7 ++++++- .../models/bgp/openconfig-bgp-common-structure.yang | 8 +++++++- release/models/bgp/openconfig-bgp-common.yang | 8 +++++++- release/models/bgp/openconfig-bgp-global.yang | 8 +++++++- release/models/bgp/openconfig-bgp-neighbor.yang | 11 +++++++++-- release/models/bgp/openconfig-bgp-peer-group.yang | 8 +++++++- release/models/bgp/openconfig-bgp.yang | 8 +++++++- 7 files changed, 50 insertions(+), 8 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 514b757d6..705019c01 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,8 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index 6c9c9610e..e737d9d13 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index 461c3eceb..fe3f82477 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 980b26197..28e73bac5 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -27,7 +27,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 1070c8429..3087ae03c 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description @@ -395,7 +401,8 @@ submodule openconfig-bgp-neighbor { type oc-types:timeticks64; description "This timestamp indicates the time that the BGP session last - violated a configured max prefix-limit for any AFI/SAFI combination + violated a configured recived (pre-policy) or accepted (post-policy) + max prefix-limit for any AFI/SAFI combination on the session. The value is the timestamp in nanoseconds relative to the Unix Epoch (Jan 1, 1970 00:00:00 UTC). diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index f4eafff75..9091e68e1 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index 810a41898..de65238c9 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,13 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.7.0"; + oc-ext:openconfig-version "9.7.1"; + + revision "2023-12-28" { + description + "Clarification to last-prefix-limit-exceeded in description"; + reference "9.7.1"; + } revision "2023-12-28" { description From 5d24889a323a84fd077cbb83c2c7b5fb4896a6fe Mon Sep 17 00:00:00 2001 From: Rob Shakir Date: Fri, 23 Feb 2024 08:34:11 -0800 Subject: [PATCH 313/372] Fix typo in RFC5303 reference. (#1054) * Fix typo in RFC5303 reference. * (M) release/models/isis/openconfig-isis(-lsp|-routing)?.yang - Fix typo in reference to RFC5303 in adjacency state leaf. --------- Co-authored-by: Darren Loher --- release/models/isis/openconfig-isis-lsp.yang | 8 +++++++- release/models/isis/openconfig-isis-routing.yang | 8 +++++++- release/models/isis/openconfig-isis.yang | 10 ++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 95d31837e..04ac1dae3 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.6.1"; + oc-ext:openconfig-version "1.6.2"; + + revision "2024-02-20" { + description + "Fix typo in RFC reference for adjacency-state."; + reference "1.6.2"; + } revision "2023-11-01" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 56f0faed4..12c243421 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.6.1"; + oc-ext:openconfig-version "1.6.2"; + + revision "2024-02-20" { + description + "Fix typo in RFC reference for adjacency-state."; + reference "1.6.2"; + } revision "2023-11-01" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index fe99d4024..d08e14d14 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.6.1"; + oc-ext:openconfig-version "1.6.2"; + + revision "2024-02-20" { + description + "Fix typo in RFC reference for adjacency-state."; + reference "1.6.2"; + } revision "2023-11-01" { description @@ -1827,7 +1833,7 @@ module openconfig-isis { type oc-isis-types:isis-interface-adj-state; description "P2P 3-way ISIS adjacency state(up, down, init, failed)."; - reference "RFC4303. TLV 240."; + reference "RFC5303: TLV 240."; } leaf up-timestamp { From 063f5a7a249f3f0566f695f220628556572d3156 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Mon, 4 Mar 2024 13:52:49 -0500 Subject: [PATCH 314/372] Add gNSI models (#1037) * Add gNSI models --------- Co-authored-by: Darren Loher --- release/models/gnsi/.spec.yml | 10 + .../models/gnsi/openconfig-gnsi-acctz.yang | 245 +++++++++++++ .../models/gnsi/openconfig-gnsi-authz.yang | 212 +++++++++++ .../models/gnsi/openconfig-gnsi-certz.yang | 209 +++++++++++ .../gnsi/openconfig-gnsi-credentialz.yang | 302 ++++++++++++++++ .../models/gnsi/openconfig-gnsi-pathz.yang | 331 ++++++++++++++++++ release/models/gnsi/openconfig-gnsi.yang | 40 +++ release/models/system/.spec.yml | 5 + 8 files changed, 1354 insertions(+) create mode 100644 release/models/gnsi/.spec.yml create mode 100644 release/models/gnsi/openconfig-gnsi-acctz.yang create mode 100644 release/models/gnsi/openconfig-gnsi-authz.yang create mode 100644 release/models/gnsi/openconfig-gnsi-certz.yang create mode 100644 release/models/gnsi/openconfig-gnsi-credentialz.yang create mode 100644 release/models/gnsi/openconfig-gnsi-pathz.yang create mode 100644 release/models/gnsi/openconfig-gnsi.yang diff --git a/release/models/gnsi/.spec.yml b/release/models/gnsi/.spec.yml new file mode 100644 index 000000000..d8c79b235 --- /dev/null +++ b/release/models/gnsi/.spec.yml @@ -0,0 +1,10 @@ +- name: openconfig-system-gnsi + build: + - yang/system/openconfig-system.yang + - yang/gnsi/openconfig-gnsi.yang + - yang/gnsi/openconfig-gnsi-acctz.yang + - yang/gnsi/openconfig-gnsi-authz.yang + - yang/gnsi/openconfig-gnsi-certz.yang + - yang/gnsi/openconfig-gnsi-credentialz.yang + - yang/gnsi/openconfig-gnsi-pathz.yang + run-ci: true diff --git a/release/models/gnsi/openconfig-gnsi-acctz.yang b/release/models/gnsi/openconfig-gnsi-acctz.yang new file mode 100644 index 000000000..d95ccccfb --- /dev/null +++ b/release/models/gnsi/openconfig-gnsi-acctz.yang @@ -0,0 +1,245 @@ +module openconfig-gnsi-acctz { + yang-version 1; + namespace "https://github.com/openconfig/yang/gnsi/acctz"; + prefix oc-gnsi-acctz; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { + prefix oc-sys; + } + import openconfig-system-grpc { + prefix oc-sys-grpc; + } + import openconfig-types { + prefix oc-types; + } + import openconfig-yang-types { + prefix oc-yang; + } + import openconfig-gnsi { + prefix oc-gnsi; + } + organization + "OpenConfig Working Group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module provides counters of gNSI accountZ requests and responses and + the quantity of data transferred."; + + oc-ext:openconfig-version "0.2.0"; + + revision 2024-02-13 { + description + "Major style updates and move to openconfig/public from openconfig/gnsi. + Last commit at + https://github.com/openconfig/gnsi/commit/347935aac66135d5649dadb9583ed0914578aab0"; + reference "0.2.0"; + } + + revision 2023-12-01 { + description + "Initial revision."; + reference "0.1.0"; + } + + typedef cmd-service { + description "enum CommandService.CmdServiceType"; + type enumeration { + enum UNSPECIFIED { + value 0; + } + enum SHELL { + value 1; + } + enum CLI { + value 2; + } + enum WEBUI { + value 3; + } + enum RESTCONF { + value 4; + } + enum NETCONF { + value 5; + } + } + } + typedef grpc-service { + description "enum GrpcService.GrpcServiceType"; + type enumeration { + enum UNSPECIFIED { + value 0; + } + enum GNMI { + value 1; + } + enum GNOI { + value 2; + } + enum GNSI { + value 3; + } + enum GRIBI { + value 4; + } + enum P4RT { + value 5; + } + } + } + typedef service-request { + description "enum RecordResponse.service_request"; + type enumeration { + enum CMD_SERVICE { + value 4; + } + enum GRPC_SERVICE { + value 5; + } + } + } + typedef service-type { + description "enum cmd or grpc service type"; + type union { + type cmd-service; + type grpc-service; + } + } + + // gnsi.acctz client statistics + grouping client-counters { + description + "A collection of counters that were collected by the gNSI.acctz + module while servicing acctz clients."; + + container client-counters { + description + "A collection of counters that were collected by the gNSI.acctz + module while servicing acctz clients."; + leaf history-istruncated { + type oc-yang:counter64; + description + "The total number of times that a RecordRequest resulted in + a RecordResponse being marked history-istruncated. ie: a + request was made for a timestamp that did not exist in the + history."; + } + leaf idle-timeouts { + type oc-yang:counter64; + description + "The total number of times that a client was disconnected + due to missing keepalives (ie: RecordRequests)."; + } + leaf record-requests { + type oc-yang:counter64; + description + "The total number of RecordRequest RPCs that have been received."; + } + leaf record-responses { + type oc-yang:counter64; + description + "The total number of RecordResponse RPCs that have been sent."; + } + } + } + + // gnsi.acctz producer statistics + grouping source-counters { + description + "A collection of counters for gNSI.acctz record production per + service request type."; + + container source-counters { + description + "A collection of counters for gNSI.acctz record production per + service request type."; + list source-records { + key "service type"; + // unique "service type"; + description + "The total number of times the gNSI.authz module denied access + to a RPC."; + + leaf service { + type leafref { + path "../state/service"; + } + description + "service request type for the gNSI.acctz record."; + } + leaf type { + type leafref { + path "../state/type"; + } + description + "service request application enum for the gNSI.acctz record."; + } + + container state { + description + "Operational state for gNSI.acctz counters of record production per + service request type."; + leaf service { + type service-request; + description + "service request type for the gNSI.acctz record."; + } + leaf type { + type service-type; + description + "service request application enum for the gNSI.acctz record."; + } + leaf records { + type oc-yang:counter64; + description + "The total number of records produced for the service-request + type."; + } + } + } + } + } + + grouping grpc-server-acctz-counters { + description + "A collection of counters from the gNSI.acctz module."; + + container acctz-counters { + config false; + description + "A collection of counters from the gNSI.acctz module + for acctz clients and sources."; + + container state { + description + "Operational state relating to acctz-counters."; + + leaf counters-last-cleared { + type oc-types:timeticks64; + description + "The last time that the counters were cleared (reset to + zero). This value is reported as nanoseconds since epoch + (January 1st, 1970 00:00:00 GMT)."; + } + + uses client-counters; + } + + uses source-counters; + } + } + + // Augments section. + augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" { + when "config[contains(services, 'oc-gnsi:GNSI')]/enable = 'true'"; + description + "Counters collected by the gNSI.acctz module."; + + uses grpc-server-acctz-counters; + } +} diff --git a/release/models/gnsi/openconfig-gnsi-authz.yang b/release/models/gnsi/openconfig-gnsi-authz.yang new file mode 100644 index 000000000..870fcac2b --- /dev/null +++ b/release/models/gnsi/openconfig-gnsi-authz.yang @@ -0,0 +1,212 @@ +module openconfig-gnsi-authz { + yang-version 1; + namespace "https://github.com/openconfig/yang/gnsi/authz"; + prefix oc-gnsi-authz; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { + prefix oc-sys; + } + import openconfig-system-grpc { + prefix oc-sys-grpc; + } + import openconfig-types { + prefix oc-types; + } + import openconfig-yang-types { + prefix oc-yang; + } + import openconfig-gnsi { + prefix oc-gnsi; + } + organization + "OpenConfig Working Group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module provides a data model for the metadata of the gRPC + authorization policies installed on a networking device."; + + oc-ext:openconfig-version "0.4.0"; + + revision 2024-02-13 { + description + "Major style updates and move to openconfig/public from openconfig/gnsi. + Last commit at + https://github.com/openconfig/gnsi/commit/347935aac66135d5649dadb9583ed0914578aab0"; + reference "0.4.0"; + } + + revision 2022-10-30 { + description + "Adds success/failure counters."; + reference "0.3.0"; + } + + revision 2022-08-01 { + description + "Single authz policy."; + reference "0.2.0"; + } + + revision 2022-01-17 { + description + "Initial revision."; + reference "0.1.0"; + } + + typedef version { + type string; + description + "The version ID of the gRPC authorization policy as provided by + the gRPC Authorization Policy Manager when the policy was pushed. + This leaf persists through a reboot."; + } + + typedef created-on { + type oc-types:timeticks64; + description + "The creation time of the gRPC authorization policy as reported by + the gRPC Authorization Policy manager when the policy was pushed + to the device. This value is reported as nanoseconds since epoch + (January 1st, 1970 00:00:00 GMT). This leaf persists through + a reboot."; + } + + // gRPC server authorization policy related definitions. + grouping counters { + description + "A collection of counters that were collected by the gNSI.authz + module while evaluating access to a RPC."; + + leaf access-rejects { + type oc-yang:counter64; + description + "The total number of times the gNSI.authz module denied access + to a RPC."; + } + leaf last-access-reject { + type oc-types:timeticks64; + description + "A timestamp of the last time the gNSI.authz denied access to + a RPC."; + } + leaf access-accepts { + type oc-yang:counter64; + description + "The total number of times the gNSI.authz module allowed access + to a RPC."; + } + leaf last-access-accept { + type oc-types:timeticks64; + description + "A timestamp of the last time the gNSI.authz allowed access to + a RPC."; + } + } + + grouping grpc-server-user-authz-policy-success-failure-counters { + description + "A collection of counters collected by the gNSI.authz module."; + + container rpcs { + description + "A collection of counters collected by the gNSI.authz module + for each RPC separately."; + + list rpc { + description + "A collection of counters collected by the gNSI.authz module + for a RPC identified by the `name`."; + + key "name"; + leaf name { + type leafref { + path "../state/name"; + } + description + "The name of the RPC the counters were collected for. + + The name MUST match the HTTP/2 Path header value in + https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests + + For example, + /gnmi.gNMI/Subscribe + /gnoi.healthz.Healthz/Get + "; + } + container state { + description + "operational state for authz policy success/failure counters."; + leaf name { + type string; + description + "The name of the RPC the counters were collected for. + + The name MUST match the HTTP/2 Path header value in + https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md#requests + + For example, + /gnmi.gNMI/Subscribe + /gnoi.healthz.Healthz/Get + "; + } + uses counters; + } + } + } + } + + grouping grpc-server-authz-policy-success-failure-counters { + description + "A collection of counters collected by the gNSI.authz module."; + + container authz-policy-counters { + description + "A collection of counters collected by the gNSI.authz module."; + config false; + + uses grpc-server-user-authz-policy-success-failure-counters; + } + } + + grouping grpc-server-authz-policy-state { + description + "gNMI server's gRPC authorization policy freshness-related data."; + + leaf grpc-authz-policy-version { + type version; + description + "The version of the gRPC authorization policy that is used by + this system."; + } + leaf grpc-authz-policy-created-on { + type created-on; + description + "The timestamp of the moment when the gRPC authorization policy + that is currently used by this system was created."; + } + } + + // Augments section. + + augment "/oc-sys:system/oc-sys:aaa/oc-sys:authorization/" + + "oc-sys:state" { + description + "A system's gRPC authorization policy freshness information."; + + uses grpc-server-authz-policy-state; + } + + augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" { + when "config[contains(services, 'oc-gnsi:GNSI')]/enable = 'true'"; + description + "Counters collected while evaluating access to a gRPC server using + the gNSI.authz authorization policy."; + + uses grpc-server-authz-policy-success-failure-counters; + } +} diff --git a/release/models/gnsi/openconfig-gnsi-certz.yang b/release/models/gnsi/openconfig-gnsi-certz.yang new file mode 100644 index 000000000..9b5e9a1ca --- /dev/null +++ b/release/models/gnsi/openconfig-gnsi-certz.yang @@ -0,0 +1,209 @@ +module openconfig-gnsi-certz { + yang-version 1; + namespace "https://github.com/openconfig/yang/gnsi/certz"; + prefix oc-gnsi-certz; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { + prefix oc-sys; + } + import openconfig-system-grpc { + prefix oc-sys-grpc; + } + import openconfig-types { + prefix oc-types; + } + import openconfig-yang-types { + prefix oc-yang; + } + import openconfig-gnsi { + prefix oc-gnsi; + } + organization + "OpenConfig Working Group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module provides a data model for the metadata of gRPC credentials + installed on a networking device."; + + oc-ext:openconfig-version "0.5.0"; + + revision 2024-02-13 { + description + "Major style updates and move to openconfig/public from openconfig/gnsi. + Last commit at + https://github.com/openconfig/gnsi/commit/347935aac66135d5649dadb9583ed0914578aab0"; + reference "0.5.0"; + } + + revision 2023-08-24 { + description + "Adds ssl-profile-id leaf"; + reference "0.4.0"; + } + + revision 2023-05-10 { + description + "Adds authentication policy freshness information."; + reference "0.3.0"; + } + + revision 2022-10-30 { + description + "Adds success/failure counters."; + reference "0.2.0"; + } + + revision 2022-09-20 { + description + "Initial revision."; + reference "0.1.0"; + } + + typedef version { + type string; + description + "The version ID of the credential as provided by the credential + manager when the credential was pushed. This leaf persists through + a reboot."; + } + + typedef created-on { + type oc-types:timeticks64; + description + "The creation time of the credential as reported by the credential + manager when the credential was pushed to the device. This value is + reported as nanoseconds since epoch (January 1st, 1970 00:00:00 GMT). + This leaf persists through a reboot."; + } + // gRPC server related definitions. + // Success/failure counters. + grouping grpc-server-certz-counters { + description + "A collection of counters that were collected while evaluating + access to the gRPC server."; + + container certz-counters { + config false; + description + "A collection of counters that were collected by the gRPC during + the authentication process."; + + leaf access-rejects { + type oc-yang:counter64; + description + "The total number of times a TLS handshake failure has occurred and + the gRPC server denied access a client."; + } + leaf last-access-reject { + type oc-types:timeticks64; + description + "A timestamp of the last time the gRPC denied access to + the server."; + } + leaf access-accepts { + type oc-yang:counter64; + description + "The total number of times a successful TLS handshake is completed + and the gPRC server allows access to a client."; + } + leaf last-access-accept { + type oc-types:timeticks64; + description + "A timestamp of the last time the gRPC allowed access to + the server."; + } + } + } + + // TODO(earies): move to a system-wide subtree: + // https://github.com/openconfig/public/issues/1049 + grouping grpc-server-credentials-state { + description + "gRPC server credentials freshness-related data."; + + leaf certificate-version { + type version; + description + "The version of the certificate (and associated + private key) that is used by this gRPC server."; + } + leaf certificate-created-on { + type created-on; + description + "The timestamp of the moment when the certificate + (and associated private key) that is currently used + by this gRPC server was created."; + } + leaf ca-trust-bundle-version { + type version; + description + "The version of the bundle of the Certificate + Authority certificates a.k.a. trust bundle used by + this gRPC server."; + } + leaf ca-trust-bundle-created-on { + type created-on; + description + "The timestamp of the moment when the bundle of + the Certificate Authority certificates (a.k.a. + trust bundle) was created."; + } + leaf certificate-revocation-list-bundle-version { + type version; + description + "The version of the Certificate Revocation List bundle used by + this gRPC server."; + } + leaf certificate-revocation-list-bundle-created-on { + type created-on; + description + "The timestamp of the moment when the Certificate Revocation + List bundle was created."; + } + leaf authentication-policy-version { + type version; + description + "The version of the authentication policy that is used by + this gRPC server."; + } + leaf authentication-policy-created-on { + type created-on; + description + "The timestamp of the moment when the authentication policy + that is currently used by this gRPC server was created."; + } + // TODO(earies): Consider aligning this with grpc-server key after moving + // to a system-wide subtree: + // https://github.com/openconfig/public/issues/1050 + leaf ssl-profile-id { + type string; + description + "The ID of this gRPC server's SSL profile + as used by the gNSI Certz service"; + } + } + + // Augments section. + + augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server/" + + "oc-sys-grpc:state" { + when "../config[contains(services, 'oc-gnsi:GNSI')]/enable = 'true'"; + description + "A gRPC server credentials freshness information."; + + uses grpc-server-credentials-state; + } + + augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server/" + + "oc-sys-grpc:state" { + when "../config[contains(services, 'oc-gnsi:GNSI')]/enable = 'true'"; + uses grpc-server-certz-counters; + description + "gNSI certz server access counters."; + } +} diff --git a/release/models/gnsi/openconfig-gnsi-credentialz.yang b/release/models/gnsi/openconfig-gnsi-credentialz.yang new file mode 100644 index 000000000..0e4392a7a --- /dev/null +++ b/release/models/gnsi/openconfig-gnsi-credentialz.yang @@ -0,0 +1,302 @@ +module openconfig-gnsi-credentialz { + yang-version 1; + namespace "https://github.com/openconfig/yang/gnsi/credentialz"; + prefix oc-gnsi-credz; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { + prefix oc-sys; + } + import openconfig-types { + prefix oc-types; + } + import openconfig-yang-types { + prefix oc-yang; + } + import openconfig-system-grpc { + prefix oc-sys-grpc; + } + import openconfig-gnsi { + prefix oc-gnsi; + } + organization + "OpenConfig Working Group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module provides a data model for the metadata of SSH and console + credentials installed on a networking device. + + The following leaves MUST be treated as invalid when the gNSI server is + enabled and credentialz is supported by the implementation: + /system/aaa/authentication/users/user/config/ssh-key + /system/aaa/authentication/users/user/state/ssh-key + /system/aaa/authentication/users/user/config/password + /system/aaa/authentication/users/user/state/password + /system/aaa/authentication/users/user/config/password-hashed + /system/aaa/authentication/users/user/state/password-hashed"; + + oc-ext:openconfig-version "0.6.0"; + + revision 2024-02-13 { + description + "Major style updates and move to openconfig/public from openconfig/gnsi. + Last commit at + https://github.com/openconfig/gnsi/commit/347935aac66135d5649dadb9583ed0914578aab0"; + reference "0.6.0"; + } + + revision 2024-01-05 { + description + "Fix typo in YANG leaves"; + reference "0.5.0"; + } + + revision 2023-10-03 { + description + "Added state leaves for admin-user"; + reference "0.4.0"; + } + + revision 2023-08-18 { + description + "Fixed the canonical order of config field."; + reference "0.3.0"; + } + + revision 2022-10-30 { + description + "Adds success/failure counters."; + reference "0.2.0"; + } + + revision 2022-08-22 { + description + "Initial revision."; + reference "0.1.0"; + } + + typedef version { + type string; + description + "The version ID of the credential as provided by the credential + manager when the credential was pushed. This leaf persists through + a reboot."; + } + + typedef created-on { + type oc-types:timeticks64; + description + "The creation time of the credential as reported by the credential + manager when the credential was pushed to the device. This value is + reported as nanoseconds since epoch (January 1st, 1970 00:00:00 GMT). + This leaf persists through a reboot."; + } + + // SSH server related definitions. + + grouping ssh-server-credentials-version { + description + "SSH server credentials freshness-related data."; + + leaf active-trusted-user-ca-keys-version { + type version; + description + "The version of the Certificate Authority keys."; + } + + leaf active-trusted-user-ca-keys-created-on { + type created-on; + description + "The timestamp of the moment when the trusted user CA keys + were created."; + } + + leaf active-host-certificate-version { + type version; + description + "The version of the host certificate."; + } + + leaf active-host-certificate-created-on { + type created-on; + description + "The timestamp of the moment when the host certificate + was created."; + } + + leaf active-host-key-version { + type version; + description + "The version of the host public key."; + } + + leaf active-host-key-created-on { + type created-on; + description + "The timestamp of the moment when the host key was + created."; + } + } + + // Success/failure counters. + grouping counters { + description + "A collection of counters that were collected while evaluating + access to the target."; + + container counters { + config false; + description + "A collection of counters collected while authorizing users + accessing the target."; + leaf access-rejects { + type oc-yang:counter64; + description + "The total number of times access to the target has been + denied."; + } + leaf last-access-reject { + type oc-types:timeticks64; + description + "A timestamp of the last time access to the target has been + denied."; + } + leaf access-accepts { + type oc-yang:counter64; + description + "The total number of times access to the target has been + allowed."; + } + leaf last-access-accept { + type oc-types:timeticks64; + description + "A timestamp of the last time access to the target has been + allowed."; + } + } + } + // System role SSH related definitions. + + grouping user-ssh-credentials-version { + description + "System role credentials freshness-related data."; + + leaf authorized-principals-list-version { + type version; + description + "The version of the list of authorized principals currently + associated with this system role."; + } + + leaf authorized-principals-list-created-on { + type created-on; + description + "The timestamp of the moment the currently used list of + authorized principals has been created."; + } + + leaf authorized-keys-list-version { + type version; + description + "The version of the list of authorized keys that is currently + associated with this system role."; + } + + leaf authorized-keys-list-created-on { + type created-on; + description + "The timestamp of the moment the currently used list of + authorized keys has been created."; + } + } + + grouping console-config-state { + description + "Console-related configuration and state."; + container console { + description + "Console-related configuration and state."; + + container config { + description + "Console-related configuration."; + } + + container state { + config false; + description + "Console-related state."; + + uses counters; + } + } + } + // System role console related definitions. + + grouping user-console-credentials-version { + description + "System role credentials freshness-related data."; + + leaf password-version { + type version; + description + "The version of the password that is currently used to + authenticate this user account."; + } + + leaf password-created-on { + type created-on; + description + "The timestamp of the moment the currently used password has + been created."; + } + } + + // Augments section. + + augment "/oc-sys:system" { + when "oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" + + "/oc-sys-grpc:config[contains(oc-sys-grpc:services, 'oc-gnsi:GNSI')]" + + "/oc-sys-grpc:enable = 'true'"; + description + "Console credentials freshness data."; + + uses console-config-state; + } + augment "/oc-sys:system/oc-sys:ssh-server/oc-sys:state" { + when "../../oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" + + "/oc-sys-grpc:config[contains(oc-sys-grpc:services, 'oc-gnsi:GNSI')]" + + "/oc-sys-grpc:enable = 'true'"; + description + "SSH server credentials freshness data."; + + uses ssh-server-credentials-version; + uses counters; + } + augment "/oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:users/" + + "oc-sys:user/oc-sys:state" { + when "../../../../../oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" + + "/oc-sys-grpc:config[contains(oc-sys-grpc:services, 'oc-gnsi:GNSI')]" + + "/oc-sys-grpc:enable = 'true'"; + description + "A system role credentials freshness information."; + + uses user-console-credentials-version; + uses user-ssh-credentials-version; + } + augment "/oc-sys:system/oc-sys:aaa/oc-sys:authentication/oc-sys:admin-user/" + + "oc-sys:state" { + when "../../../../oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" + + "/oc-sys-grpc:config[contains(oc-sys-grpc:services, 'oc-gnsi:GNSI')]" + + "/oc-sys-grpc:enable = 'true'"; + description + "A system role credentials freshness information."; + + uses user-console-credentials-version; + uses user-ssh-credentials-version; + } +} diff --git a/release/models/gnsi/openconfig-gnsi-pathz.yang b/release/models/gnsi/openconfig-gnsi-pathz.yang new file mode 100644 index 000000000..962ea79c4 --- /dev/null +++ b/release/models/gnsi/openconfig-gnsi-pathz.yang @@ -0,0 +1,331 @@ +module openconfig-gnsi-pathz { + yang-version 1; + namespace "https://github.com/openconfig/yang/gnsi/pathz"; + prefix oc-gnsi-pathz; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system { + prefix oc-sys; + } + import openconfig-system-grpc { + prefix oc-sys-grpc; + } + import openconfig-types { + prefix oc-types; + } + import openconfig-yang-types { + prefix oc-yang; + } + import openconfig-gnsi { + prefix oc-gnsi; + } + + organization + "OpenConfig Working Group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module provides a data model for the metadata of + OpenConfig-path-based authorization policies installed on a networking + device."; + + oc-ext:openconfig-version "0.3.0"; + + revision 2024-02-13 { + description + "Major style updates and move to openconfig/public from openconfig/gnsi. + Last commit at + https://github.com/openconfig/gnsi/commit/347935aac66135d5649dadb9583ed0914578aab0"; + reference "0.3.0"; + } + + revision 2022-10-30 { + description + "Adds success/failure counters."; + reference "0.2.0"; + } + + revision 2022-01-17 { + description + "Initial revision."; + reference "0.1.0"; + } + + typedef version { + type string; + description + "The version ID of the OpenConfig-path-based authorization policy + as provided by the OpenConfig-path-based Authorization Policy + Manager when the policy was pushed. This leaf persists through + a reboot."; + } + + typedef created-on { + type oc-types:timeticks64; + description + "The creation time of the OpenConfig-path-based authorization policy + as reported by the OpenConfig-path-based Authorization Policy + manager when the policy was pushed to the device. This value is + reported as nanoseconds since epoch (January 1st, 1970 00:00:00 GMT). + This leaf persists through a reboot."; + } + + // gRPC server related definitions. + grouping counters { + description + "A collection of counters that were collected by the gNSI.pathz + module while evaluating access to an OpenConfig path."; + + leaf access-rejects { + type oc-yang:counter64; + description + "The total number of times the gNSI.pathz module denied access + to an OpenConfig path."; + } + leaf last-access-reject { + type oc-types:timeticks64; + description + "A timestamp of the last time the gNSI.pathz denied access to + an OpenConfig path"; + } + leaf access-accepts { + type oc-yang:counter64; + description + "The total number of times the gNSI.pathz module allowed access + to an OpenConfig path."; + } + leaf last-access-accept { + type oc-types:timeticks64; + description + "A timestamp of the last time the gNSI.pathz allowed access to + an OpenConfig path"; + } + } + + grouping gnmi-pathz-policy-success-failure-counters { + description + "A collection of counters collected by the gNSI.pathz module."; + + container gnmi-pathz-policy-counters { + config false; + description + "A collection of per-OpenConfig path counters."; + + uses gnmi-pathz-policy-xpath-success-failure-counters; + } + } + + grouping gnmi-pathz-policy-xpath-success-failure-counters { + description + "A collection of per-OpenConfig path counters."; + + container paths { + description + "Container for a collection of per-OpenConfig path counters."; + + list path { + description + "List for a collection of per-OpenConfig path counters."; + key "name"; + leaf name { + type leafref { + path "../state/name"; + } + description + "A OpenConfig schema path the counter were + collected for. + + For documentation on the naming of paths, see + https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-path-conventions.md"; + } + container state { + description + "Operational state for per-OpenConfig path counters."; + leaf name { + type string; + description + "A OpenConfig schema path the counter were + collected for. + + For documentation on the naming of paths, see + https://github.com/openconfig/reference/blob/master/rpc/gnmi/gnmi-path-conventions.md"; + } + container reads { + description + "The counter were collected while + performing a read operation on the + schema path."; + uses counters; + } + container writes { + description + "The counter were collected while + performing a write operation on the + schema path."; + uses counters; + } + } + } + } + } + + grouping grpc-server-gnmi-pathz-policy-state { + description + "gNMI server OpenConfig-path-based authorization policy + freshness-related data."; + + leaf gnmi-pathz-policy-version { + type version; + description + "The version of the OpenConfig-path-based authorization policy + that is used by this gNMI server."; + } + leaf gnmi-pathz-policy-created-on { + type created-on; + description + "The timestamp of the moment when the OpenConfig-path-based + authorization policy that is currently used by this gNMI server + was created."; + } + } + + grouping gnmi-pathz-policy-state { + description + "Operational state data for a gNMI OpenConfig-path-based + authorization policy."; + leaf instance { + type enumeration { + enum ACTIVE { + value 1; + description + "The policy that is currently used by the gNMI service + to authorize access."; + } + enum SANDBOX { + value 2; + description + "The most recent policy that has been uploaded during + the Rotation() RPC. If there is no Rotate() RPC in + progress, then referring to this instance of the policy + will result in an error."; + } + } + description + "The instance identifier of the gNMI OpenConfig-path-based + authorization policy."; + } + leaf version { + type version; + description + "The version of the gNMI OpenConfig-path-based authorization + policy."; + } + leaf created-on { + type created-on; + description + "The timestamp of the moment when the policy was + created."; + } + } + + grouping gnmi-pathz-policies { + description + "Collection of OpenConfig-path-based authorization policies that + have been installed on the device using the gNSI OpenConfig-path- + based authorization policy management service. + Each OpenConfig-path-based authorization policy listed here is + identified by its status (either ACTIVE or SANDBOX) and has its + version and creation date/time listed."; + + container policies { + config false; + description + "Information about freshness of an OpenConfig-path-based + authorization policy that have been installed + on the device using the gNSI OpenConfig-path-based + authorization policy management service."; + + list policy { + key "instance"; + ordered-by system; + description + "Information about the OpenConfig-path-based authorization + policy that is identified by the `instance`."; + leaf instance { + type leafref { + path "../state/instance"; + } + description + "The ID of the OpenConfig-path-based authorization + policy."; + } + container state { + description + "Operational state data for an OpenConfig-path-based + authorization policies."; + + uses gnmi-pathz-policy-state; + } + } + } + } + + grouping system-gnmi-pathz-policies { + description + "Collection of OpenConfig-path-based authorization policies that + have been installed on the device using the gNSI OpenConfig-path- + based authorization policy management service. + Each policy listed here is identified by its status (either ACTIVE + or SANDBOX) and has its version and creation date/time listed."; + + container gnmi-pathz-policies { + config false; + description + "Collection of OpenConfig-path-based authorization policies that + have been installed on the device using the gNSI OpenConfig- + path-based authorization policy management service. + Each policy listed here is identified by its status (either + ACTIVE or SANDBOX) and has its version and creation date/time + listed."; + + uses gnmi-pathz-policies; + } + } + + // Augments section. + + augment "/oc-sys:system" { + when "oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" + + "/oc-sys-grpc:config[contains(oc-sys-grpc:services, 'oc-gnsi:GNSI')]" + + "/oc-sys-grpc:enable = 'true'"; + description + "Collection of OpenConfig-path-based authorization policies that + have been installed on the device using the gNSI OpenConfig-path- + based authorization policy management service. + Each policy listed here is identified by its status (either ACTIVE + or SANDBOX) and has its version and creation date/time listed."; + + uses system-gnmi-pathz-policies; + } + augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" + + "/oc-sys-grpc:state" { + when "../config[contains(services, 'oc-gnsi:GNSI')]/enable = 'true'"; + description + "A gNMI server OpenConfig-path-based authorization policy freshness + information."; + + uses grpc-server-gnmi-pathz-policy-state; + } + augment "/oc-sys:system/oc-sys-grpc:grpc-servers/oc-sys-grpc:grpc-server" { + when "oc-sys-grpc:config[contains(oc-sys-grpc:services, 'oc-gnsi:GNSI')]" + + "/oc-sys-grpc:enable = 'true'"; + description + "A gNMI server OpenConfig-path-based authorization policy + success/failure counters."; + + uses gnmi-pathz-policy-success-failure-counters; + } +} diff --git a/release/models/gnsi/openconfig-gnsi.yang b/release/models/gnsi/openconfig-gnsi.yang new file mode 100644 index 000000000..0c10a2a0b --- /dev/null +++ b/release/models/gnsi/openconfig-gnsi.yang @@ -0,0 +1,40 @@ +module openconfig-gnsi { + yang-version "1"; + + prefix "oc-gnsi"; + + namespace "http://openconfig.net/yang/gnsi"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-system-grpc { prefix oc-grpc; } + + organization + "OpenConfig Working Group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines a set of extensions that provide gNSI (the gRPC + Network Security Interface) specific extensions to the OpenConfig data models. + Specifically, the parameters for the configuration of the service, and + configuration and state are added. + + The gNSI protobufs and documentation are published at + https://github.com/openconfig/gnsi."; + + oc-ext:openconfig-version "0.1.0"; + + revision 2024-02-13 { + description + "Initial revision."; + reference "0.1.0"; + } + + identity GNSI { + base "oc-grpc:GRPC_SERVICE"; + description + "gNSI: gRPC Network Security Interface"; + } +} diff --git a/release/models/system/.spec.yml b/release/models/system/.spec.yml index de5ecc001..92061e9bf 100644 --- a/release/models/system/.spec.yml +++ b/release/models/system/.spec.yml @@ -17,6 +17,11 @@ - yang/system/openconfig-system-logging.yang - yang/system/openconfig-system-terminal.yang - yang/system/openconfig-system-utilization.yang + - yang/gnsi/openconfig-gnsi-acctz.yang + - yang/gnsi/openconfig-gnsi-authz.yang + - yang/gnsi/openconfig-gnsi-certz.yang + - yang/gnsi/openconfig-gnsi-credentialz.yang + - yang/gnsi/openconfig-gnsi-pathz.yang build: - yang/system/openconfig-system.yang - yang/system/openconfig-system-utilization.yang From 9826cae9e0aa1b81dbe5abcbce842adcc35f7921 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 5 Mar 2024 09:05:15 -0800 Subject: [PATCH 315/372] Clarify disable-metric-propagation (#1035) * clarify disable-metric-propagation --- .../openconfig-network-instance-l2.yang | 9 ++++++++- .../openconfig-network-instance.yang | 13 ++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index e983abef0..76afb139f 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.3.0"; + oc-ext:openconfig-version "4.4.0"; + + revision "2024-02-27" { + description + "Clarify metric to be used for route redistribution when + disable-metric-propagation is set to true."; + reference "4.4.0"; + } revision "2023-12-13" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index b292cfb2b..f6d32cbc2 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.3.0"; + oc-ext:openconfig-version "4.4.0"; + + revision "2024-02-27" { + description + "Clarify metric to be used for route redistribution when + disable-metric-propagation is set to true."; + reference "4.4.0"; + } revision "2023-12-13" { description @@ -1237,8 +1244,8 @@ module openconfig-network-instance { - IS-IS metric may be reflected in BGP MED (and vice versa) - OSPF metric may be reflected in the BGP MED (and vice versa) When this leaf is set to true, this reflection behaviour MUST be - disabled, and rather the metric must be set to the default value, - or explicitly set by policy."; + disabled, and rather the metric must be set to '0' or explicitly + set by policy."; } uses oc-rpol:apply-policy-import-config; From 7d21dfc82acb9e39ee8b23a05ba3f5101f33b196 Mon Sep 17 00:00:00 2001 From: Brian Neville <29639579+brianneville@users.noreply.github.com> Date: Wed, 6 Mar 2024 18:59:13 +0000 Subject: [PATCH 316/372] gnsi: align with latest certz version (#1061) * (M) release/models/gnsi/openconfig-gnsi-certz.yang Align oc paths for gnsi with latest certz version. See the changes to gnsi-certz.yang at: https://github.com/openconfig/gnsi/pull/156 This commit also sets the container name for the certz counters to be just "counters" to be backward-compatible with the existing gnsi-certz.yang. The module name/prefix already mark these counters as certz-related, so we don't need to duplicate this information in the container name too. --- .../models/gnsi/openconfig-gnsi-certz.yang | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/release/models/gnsi/openconfig-gnsi-certz.yang b/release/models/gnsi/openconfig-gnsi-certz.yang index 9b5e9a1ca..0b303cdc0 100644 --- a/release/models/gnsi/openconfig-gnsi-certz.yang +++ b/release/models/gnsi/openconfig-gnsi-certz.yang @@ -30,7 +30,13 @@ module openconfig-gnsi-certz { "This module provides a data model for the metadata of gRPC credentials installed on a networking device."; - oc-ext:openconfig-version "0.5.0"; + oc-ext:openconfig-version "0.6.0"; + + revision 2024-03-05 { + description + "rename access/reject counters"; + reference "0.6.0"; + } revision 2024-02-13 { description @@ -87,36 +93,36 @@ module openconfig-gnsi-certz { "A collection of counters that were collected while evaluating access to the gRPC server."; - container certz-counters { + container counters { config false; description - "A collection of counters that were collected by the gRPC during - the authentication process."; + "A collection of counters that were collected by the gRPC during + the authentication process."; - leaf access-rejects { + leaf connection-rejects { type oc-yang:counter64; description - "The total number of times a TLS handshake failure has occurred and - the gRPC server denied access a client."; + "The total number of times that gRPC clients have failed + in establishing a connection to the server."; } - leaf last-access-reject { + leaf last-connection-reject { type oc-types:timeticks64; description - "A timestamp of the last time the gRPC denied access to - the server."; + "A timestamp of the last time a gRPC client failed + in establishing a connection to the server."; } - leaf access-accepts { + leaf connection-accepts { type oc-yang:counter64; description - "The total number of times a successful TLS handshake is completed - and the gPRC server allows access to a client."; + "The total number of times that gRPC clients have succeeded + in establishing a connection to the server."; } - leaf last-access-accept { + leaf last-connection-accept { type oc-types:timeticks64; description - "A timestamp of the last time the gRPC allowed access to - the server."; - } + "A timestamp of the last time a gRPC client succeeded + in establishing a connection to the server."; + } } } From 815341544e58548526e7f9bec4e0ed2d615b69ac Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 7 Mar 2024 17:00:06 -0800 Subject: [PATCH 317/372] Clarify input-power threshold (#1056) * (M) release/models/platform/openconfig-platform-transceiver.yang Clarify transceiver optical power thresholds --- .../openconfig-platform-transceiver.yang | 58 ++++++++++++++----- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/release/models/platform/openconfig-platform-transceiver.yang b/release/models/platform/openconfig-platform-transceiver.yang index 195f56454..81a6e7031 100644 --- a/release/models/platform/openconfig-platform-transceiver.yang +++ b/release/models/platform/openconfig-platform-transceiver.yang @@ -66,7 +66,13 @@ module openconfig-platform-transceiver { specify a physical-channel within a TRANSCEIVER component (i.e. gray optic) that it is associated with."; - oc-ext:openconfig-version "0.13.0"; + oc-ext:openconfig-version "0.14.0"; + +revision "2023-08-30" { + description + "Clarify transceiver module threshold for input-power."; + reference "0.14.0"; + } revision "2023-08-30" { description @@ -451,9 +457,7 @@ revision "2023-08-30" { container thresholds { description - "Enclosing container for transceiver alarm thresholds. - Each threshold is compared to the instant value of the - measured parameter corresponding to the threshold"; + "Enclosing container for transceiver alarm thresholds."; list threshold { key "severity"; @@ -775,7 +779,9 @@ revision "2023-08-30" { } units celsius; description - "The upper temperature threshold for the laser temperature sensor."; + "The upper temperature threshold for the laser temperature sensor. + This leaf value is compared to the instant value of + laser-temperature."; } leaf laser-temperature-lower { type decimal64 { @@ -783,7 +789,9 @@ revision "2023-08-30" { } units celsius; description - "The lower temperature threshold for the laser temperature sensor."; + "The lower temperature threshold for the laser temperature sensor. + This leaf value is compared to the instant value of + laser-temperature."; } leaf output-power-upper{ type decimal64 { @@ -791,7 +799,10 @@ revision "2023-08-30" { } units dBm; description - "The upper power threshold for the laser output power."; + "The upper power threshold for the laser output power. This threshold + applies to every physical-channel on the transceiver and does not + apply to the aggregate transceiver optical-output-power. This leaf + value is compared to the instant value of optical-output-power."; } leaf output-power-lower{ type decimal64 { @@ -799,7 +810,10 @@ revision "2023-08-30" { } units dBm; description - "The lower power threshold for the laser output power."; + "The lower power threshold for the laser output power. This threshold + applies to every physical-channel on the transceiver and does not + apply to the aggregate transceiver optical-output-power. This leaf + value is compared to the instant value of optical-output-power."; } leaf input-power-upper{ type decimal64 { @@ -807,7 +821,10 @@ revision "2023-08-30" { } units dBm; description - "The upper power threshold for the laser input power."; + "The upper power threshold for the laser input power. This threshold + applies to every physical-channel on the transceiver and does not + apply to the aggregate transceiver optical-input-power. This leaf + value is compared to the instant value of optical-input-power."; } leaf input-power-lower{ type decimal64 { @@ -815,11 +832,15 @@ revision "2023-08-30" { } units dBm; description - "The lower power threshold for the laser input power."; + "The lower power threshold for the laser input power. This threshold + applies to every physical-channel on the transceiver and does not + apply to the aggregate transceiver optical-input-power. This leaf + value is compared to the instant value of optical-input-power."; } leaf laser-bias-current-upper{ description - "The upper threshold for the laser bias current."; + "The upper threshold for the laser bias current. This leaf value is + compared to the instant value of last-bias-current."; type decimal64 { fraction-digits 2; } @@ -827,7 +848,8 @@ revision "2023-08-30" { } leaf laser-bias-current-lower{ description - "The lower threshold for the laser bias current."; + "The lower threshold for the laser bias current. This leaf value is + compared to the instant value of last-bias-current."; type decimal64 { fraction-digits 2; } @@ -835,7 +857,8 @@ revision "2023-08-30" { } leaf supply-voltage-upper{ description - "The upper threshold for the transceiver supply voltage."; + "The upper threshold for the transceiver supply voltage. This leaf + value is compared to the instant value of supply-voltage."; type decimal64 { fraction-digits 2; } @@ -843,7 +866,8 @@ revision "2023-08-30" { } leaf supply-voltage-lower{ description - "The lower threshold for the transceiver supply voltage."; + "The lower threshold for the transceiver supply voltage. This leaf + value is compared to the instant value of supply-voltage."; type decimal64 { fraction-digits 2; } @@ -855,7 +879,8 @@ revision "2023-08-30" { } units celsius; description - "The lower temperature threshold for the transceiver module."; + "The lower temperature threshold for the transceiver module. This + leaf value is compared to the instant value of module-temperature."; } leaf module-temperature-upper { type decimal64 { @@ -863,7 +888,8 @@ revision "2023-08-30" { } units celsius; description - "The upper temperature threshold for the transceiver module."; + "The upper temperature threshold for the transceiver module. This + leaf value is compared to the instant value of module-temperature."; } } From 0cdabe1b9993d83145a670ac792ad4780b5157c3 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 12 Mar 2024 21:41:13 -0700 Subject: [PATCH 318/372] Fix typos in Integrated-Circuit_pipeline_aggregated_counters_guide (#1069) --- ...rated-Circuit_pipeline_aggregated_counters_guide.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md b/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md index 3dfc5087a..ad7c64d37 100644 --- a/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md +++ b/doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md @@ -1,4 +1,4 @@ -# Intergrated Circuit aggregated pipeline counters guide +# Integrated Circuit aggregated pipeline counters guide ## Introduction This guide discusses semantics of different counters provided under the `openconfig-platform/components/component/integrated-circuit/pipeline-counters` container. @@ -36,21 +36,21 @@ The increments of this counter are typically signal of some form of attack with The increments of this counter are expected during convergence events as well as during stable operation. However rapid increase in drop rate **may** be a signal of network being unhealthy and typically requires further investigation. The further break down of this counter, if available as vendor extension under `/openconfig-platform:components/component/integrated-circuit/openconfig-platform-pipeline-counters:pipeline-counters/drop/vendor` container could help to further narrow-down cause of drops. -If prolonged packet drops are found to be caused by lack of FIB entry for incomming packets, this suggest inconsistency between Network Control plane protocols (BGP, IGP, RSVP, gRIBI), FIB calculated by Controller Card and FIB programmed into given Integrated Circuit. +If prolonged packet drops are found to be caused by lack of FIB entry for incoming packets, this suggest inconsistency between Network Control plane protocols (BGP, IGP, RSVP, gRIBI), FIB calculated by Controller Card and FIB programmed into given Integrated Circuit. -If implemetation supports `urpf-aggregate` counter, packets discarded due to uRPF should not be counted as `packet-processing-aggregate`. Else, uRPF discarded oacket should be counted against this counter. +If an implementation supports `urpf-aggregate` counter, packets discarded due to uRPF should not be counted as `packet-processing-aggregate`. Else, uRPF discarded oacket should be counted against this counter. #### congestion-aggregate ##### Usability -The increments of this counter are signal of given Integrated Circuit being overhelmed by incomming traffic and complexity of packet processing that is required. +The increments of this counter are signal of given Integrated Circuit being overhelmed by incoming traffic and complexity of packet processing that is required. #### adverse-aggregate ##### Usability The increments of this counter are generally a signal of a hardware defect (e.g. memory errors or signal integrity issues) or (micro)code software defects. -#### Queue tail and AQM drops exeption discussion. +#### Queue tail and AQM drops exception discussion. Drops associated with QoS queue tail or AQM are the result of egress interface congestion. This is NOT the same as I-C congestion, and should be counted using /interfaces counters as it is expected state from the platform (router) point of view. It may be not expected state from a network design point of view but from the INTEGRATED_CIRCUIT, it is behaving according to design. The OpenConfig definition for [congestion-aggregate](https://github.com/openconfig/public/blob/5d38d8531ef9c5b998262207eb6dbdae8968f9fe/release/models/platform/openconfig-platform-pipeline-counters.yang#L1096-L1099) excludes "queue drop counters". It desirable to not count QoS queue drops under this `congestion-aggregate` in order to maintain a clear signal of hitting I-C performance limitations, rather then blend it with basic, simple egress interface speed limitations. From 6fd1f5d24d35b693864aa3218315b2acbeae9055 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 13 Mar 2024 18:01:04 -0700 Subject: [PATCH 319/372] add bgp comm regex-match (#1043) * (M) release/models/bgp/openconfig-bgp-errors.yang * (M) release/models/bgp/openconfig-bgp-policy.yang * (M) release/models/bgp/openconfig-bgp-types.yang * (M) release/models/types/openconfig-types.yang Adds posix-regex type and bgp-community-regex type and changes the bgp community-member list to include use the new posix community type. This is a breaking change due to changing an existing union type. Also clarifies the linkbw community type description. --- release/models/bgp/openconfig-bgp-errors.yang | 9 ++++- release/models/bgp/openconfig-bgp-policy.yang | 40 ++++++++++++++----- release/models/bgp/openconfig-bgp-types.yang | 28 +++++++++---- release/models/types/openconfig-types.yang | 16 +++++++- 4 files changed, 74 insertions(+), 19 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index 395fb2d3f..662395606 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,14 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "5.6.0"; + oc-ext:openconfig-version "6.0.0"; + + revision "2024-01-31" { + description + "Update community-sets/members/member union type by replacing + the bgp-regex type with posix-eregexp."; + reference "6.0.0"; + } revision "2023-12-26" { description diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index 169f78652..03dd2ab8d 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -13,7 +13,7 @@ module openconfig-bgp-policy { import openconfig-policy-types { prefix oc-pol-types; } import openconfig-bgp-types { prefix oc-bgp-types; } import openconfig-extensions { prefix oc-ext; } - + import openconfig-types { prefix oc-types; } // meta organization @@ -28,7 +28,14 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "6.4.0"; + oc-ext:openconfig-version "7.0.0"; + + revision "2024-01-31" { + description + "Update community-sets/members/member union type by replacing + the bgp-regex type with posix-eregexp."; + reference "7.0.0"; + } revision "2023-12-19" { description @@ -593,13 +600,20 @@ module openconfig-bgp-policy { type oc-bgp-types:bgp-well-known-community-type; } description - "members of the community set. - For an ADD operation these are the communities that will be added; - the regexp type is not valid in this operation. + "Members of the community set. + For an ADD operation these are the communities that will be + added. The regexp type is not valid in this operation. + For REMOVE or REPLACE operations then matching communities will be removed unless match-set-options is INVERT which will reverse this to mean that anything that does not match will be - removed."; + removed. + + For MATCH operations the posix-eregexp type should be evaluated + against each community associated with a prefix one community + at a time. Communities must be represented as strings in formats + conforming to oc-bgp-types:bgp-std-community-type. For example: + `1000:1000` for a standard community"; } leaf match-set-options { @@ -672,16 +686,24 @@ module openconfig-bgp-policy { leaf-list ext-community-member { type union { type oc-bgp-types:bgp-ext-community-type; - type oc-bgp-types:bgp-community-regexp-type; + type oc-types:posix-eregexp; } description - "members of the extended community set + "Members of the extended community set. For an ADD operation these are the communities that will be added; the regexp type is not valid in this operation. + For REMOVE or REPLACE operations then matching communities will be removed unless match-set-options is INVERT which will reverse this to mean that anything that does not match will be - removed."; + removed. + + For MATCH operations the posix-eregexp type should be evaluated + against each community associated with a prefix one community + at a time. Communities must be represented as strings in formats + conforming to oc-bgp-types:bgp-ext-community-type. For example: + `route-origin:1000:1000` for the origin type extended community, + and so on."; } leaf match-set-options { diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index b2ce46ef7..2a9298a6a 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -4,7 +4,6 @@ module openconfig-bgp-types { namespace "http://openconfig.net/yang/bgp-types"; prefix "oc-bgp-types"; - import openconfig-types { prefix "oc-types"; } import openconfig-inet-types { prefix "oc-inet"; } import openconfig-extensions { prefix "oc-ext"; } @@ -25,7 +24,13 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "5.6.0"; + oc-ext:openconfig-version "6.0.0"; + + revision "2024-02-01" { + description + "Modify bgp-community-regexp-type."; + reference "6.0.0"; + } revision "2023-12-26" { description @@ -635,11 +640,15 @@ module openconfig-bgp-types { - route-origin:<2b ASN>:<4b value> per RFC4360 section 5 - route-origin:<4b IPv4>:<2b value> per RFC4360 section 5 - color::<4b value> per draft-ietf-idr-segment-routing-te-policy - section 3"; + section 3 + - link-bandwidth:<2 byte asn>: per + draft-ietf-idr-link-bandwidth-07"; + reference "RFC 4360 - BGP Extended Communities Attribute RFC 5668 - 4-Octet AS Specific BGP Extended Community - draft-ietf-idr-segment-routing-te-policy"; + draft-ietf-idr-segment-routing-te-policy + draft-ietf-idr-link-bandwidth-07"; } typedef bgp-ext-community-recv-type { @@ -673,12 +682,15 @@ module openconfig-bgp-types { } typedef bgp-community-regexp-type { - // TODO: needs more work to decide what format these regexps can - // take. - type oc-types:std-regexp; + type oc-types:posix-eregexp; description "Type definition for communities specified as regular - expression patterns"; + expression patterns. The regular expression must be a + POSIX extended regular expression with some limitations + which are commonly found in device implementations described + in draft-ietf-idr-bgp-model."; + reference + "draft-ietf-idr-bgp-model"; } typedef bgp-origin-attr-type { diff --git a/release/models/types/openconfig-types.yang b/release/models/types/openconfig-types.yang index 89e32d515..a146b9b76 100644 --- a/release/models/types/openconfig-types.yang +++ b/release/models/types/openconfig-types.yang @@ -21,7 +21,13 @@ module openconfig-types { are used across OpenConfig models. It can be imported by modules that make use of these types."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2024-01-31" { + description + "Add posix-eregexp type and promote model to version 1.0.0."; + reference "1.0.0"; + } revision "2019-04-16" { description @@ -101,6 +107,14 @@ module openconfig-types { supported. An initial proposal is POSIX compatible."; } + typedef posix-eregexp { + type string; + description + "This is a string which represents an extended POSIX + regular expression."; + reference "IEEE Std 1003.1-2017"; + } + typedef timeticks64 { type uint64; units "nanoseconds"; From 81ca3e312049005abb99d145a9b77d742f74363b Mon Sep 17 00:00:00 2001 From: yini101 <86263319+yini101@users.noreply.github.com> Date: Mon, 18 Mar 2024 19:45:11 -0700 Subject: [PATCH 320/372] openconfig/network-instances: Add counters under endpoint-peer and endpoint-vni (#1018) * Add operational state regarding traffic encapsulated on local device and directed towards a specific VTEP network-instances/network-instance/connection-points/connection-point/ endpoints/endpoint/vxlan/endpoint-peers/endpoint-peer/state/counters/ --- .../network-instance/openconfig-evpn.yang | 108 +++++++++++++++++- 1 file changed, 106 insertions(+), 2 deletions(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index ef61d758e..d82ceffc6 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,13 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + + revision "2024-02-01" { + description + "Add counters under endpoint-peer and endpoint-vni"; + reference "0.7.0"; + } revision "2023-07-12" { description @@ -910,7 +916,8 @@ module openconfig-evpn { description "Container for state parameters related to this VTEP peer"; uses evpn-endpoint-peer-state; - } + uses evpn-endpoint-counters; + } } } @@ -939,6 +946,9 @@ module openconfig-evpn { "Container for state parameters related to this L2VNI or L3VNI"; uses evpn-endpoint-vni-state; } + + uses ipv4-top; + uses ipv6-top; } } } @@ -989,6 +999,100 @@ module openconfig-evpn { } } + grouping evpn-endpoint-counters { + description + "Grouping for Operational state regarding encapsulated traffic."; + container counters { + description + "Operational state regarding encapsulated traffic."; + leaf total-encap-pkts { + type oc-yang:counter64; + description + "The total number of encapsulated packets."; + } + leaf total-encap-bytes { + type oc-yang:counter64; + description + "The total number of encapsulated bytes."; + } + leaf bum-encap-pkts { + type oc-yang:counter64; + description + "The total number of encapsulated BUM packets."; + } + leaf total-decap-pkts { + type oc-yang:counter64; + description + "The total number of decapsulated packets."; + } + leaf total-decap-bytes { + type oc-yang:counter64; + description + "The total number of decapsulated bytes."; + } + leaf unicast-decap-pkts { + type oc-yang:counter64; + description + "The total number of decapsulated unicast packets."; + } + leaf bum-decap-pkts { + type oc-yang:counter64; + description + "The total number of decapsulated BUM packets."; + } + leaf bum-decap-multicast-pkts { + type oc-yang:counter64; + description + "The number of decapsulated BUM packets received via underlay multicast."; + } + leaf bum-decap-ir-pkts { + type oc-yang:counter64; + description + "The number of decapsulated BUM packets received via underlay ingress replication."; + } + leaf drop-decap-pkts { + type oc-yang:counter64; + description + "The total number of decapsulated packets that have been dropped locally."; + } + leaf except-decap-pkts { + type oc-yang:counter64; + description + "The total number of decapsulated packets that hit an exceptional condition."; + } + } + } + + grouping ipv4-top { + description + "Grouping for Operational state of IPv4 address family."; + container ipv4 { + description + "Parameters for the IPv4 address family."; + container state { + config false; + description + "Top level IPv4 operational state data."; + uses evpn-endpoint-counters; + } + } + } + + grouping ipv6-top { + description + "Grouping for Operational state of IPv6 address family."; + container ipv6 { + description + "Parameters for the IPv6 address family."; + container state { + config false; + description + "Top level IPv6 operational state data."; + uses evpn-endpoint-counters; + } + } + } + grouping evpn-endpoint-vni-state { description "Grouping for L2VNI and L3VNI state information learned on the From ed94287984cfcabfe8b07732864473f0fca6cb2e Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 19 Mar 2024 09:57:47 -0700 Subject: [PATCH 321/372] Update in/out-pkts descriptions (#1072) --- release/models/interfaces/openconfig-if-ip.yang | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/release/models/interfaces/openconfig-if-ip.yang b/release/models/interfaces/openconfig-if-ip.yang index 6ab1ddc24..8aebaaa06 100644 --- a/release/models/interfaces/openconfig-if-ip.yang +++ b/release/models/interfaces/openconfig-if-ip.yang @@ -44,7 +44,13 @@ module openconfig-if-ip { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.5.1"; + + revision "2024-03-13" { + description + "Update in-pkts and out-pkts descriptions."; + reference "3.5.1"; + } revision "2023-08-14" { description @@ -241,7 +247,8 @@ revision "2023-06-30" { type oc-yang:counter64; description "The total number of IP packets received for the specified - address family, including those received in error"; + address family, including all IP unicast, multicast, + broadcast and error packets."; reference "RFC 4293 - Management Information Base for the Internet Protocol (IP)"; @@ -341,7 +348,8 @@ revision "2023-06-30" { specified address family that the device supplied to the lower layers for transmission. This includes packets generated locally and those forwarded by the - device."; + device as well as unicast, multicast and broadcast + packets."; reference "RFC 4293 - Management Information Base for the Internet Protocol (IP)"; From ea279957a8dab6eb0c0b05e5a134bc3dfb0c8d28 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Tue, 19 Mar 2024 11:36:56 -0700 Subject: [PATCH 322/372] Add tributary types up to 3200G. (#1071) * Add tributary types up to 3200G. --- .../openconfig-transport-types.yang | 201 +++++++++++++++++- 1 file changed, 200 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index db7f711a0..e78dc88f1 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,14 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.22.0"; + oc-ext:openconfig-version "0.23.0"; + + revision "2024-03-12" { + description + "Add TRIBUTARY_RATE_CLASS_TYPE's up to 3200G to support + mating of two 1600G line rates."; + reference "0.23.0"; + } revision "2024-01-17" { description @@ -1494,6 +1501,198 @@ module openconfig-transport-types { "1600G tributary signal rate"; } + identity TRIB_RATE_1650G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1650G tributary signal rate"; + } + + identity TRIB_RATE_1700G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1700G tributary signal rate"; + } + + identity TRIB_RATE_1750G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1750G tributary signal rate"; + } + + identity TRIB_RATE_1800G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1800G tributary signal rate"; + } + + identity TRIB_RATE_1850G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1850G tributary signal rate"; + } + + identity TRIB_RATE_1900G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1900G tributary signal rate"; + } + + identity TRIB_RATE_1950G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "1950G tributary signal rate"; + } + + identity TRIB_RATE_2000G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2000G tributary signal rate"; + } + + identity TRIB_RATE_2050G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2050G tributary signal rate"; + } + + identity TRIB_RATE_2100G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2100G tributary signal rate"; + } + + identity TRIB_RATE_2150G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2150G tributary signal rate"; + } + + identity TRIB_RATE_2200G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2200G tributary signal rate"; + } + + identity TRIB_RATE_2250G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2250G tributary signal rate"; + } + + identity TRIB_RATE_2300G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2300G tributary signal rate"; + } + + identity TRIB_RATE_2350G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2350G tributary signal rate"; + } + + identity TRIB_RATE_2400G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2400G tributary signal rate"; + } + + identity TRIB_RATE_2450G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2450G tributary signal rate"; + } + + identity TRIB_RATE_2500G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2500G tributary signal rate"; + } + + identity TRIB_RATE_2550G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2550G tributary signal rate"; + } + + identity TRIB_RATE_2600G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2600G tributary signal rate"; + } + + identity TRIB_RATE_2650G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2650G tributary signal rate"; + } + + identity TRIB_RATE_2700G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2700G tributary signal rate"; + } + + identity TRIB_RATE_2750G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2750G tributary signal rate"; + } + + identity TRIB_RATE_2800G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2800G tributary signal rate"; + } + + identity TRIB_RATE_2850G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2850G tributary signal rate"; + } + + identity TRIB_RATE_2900G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2900G tributary signal rate"; + } + + identity TRIB_RATE_2950G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "2950G tributary signal rate"; + } + + identity TRIB_RATE_3000G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "3000G tributary signal rate"; + } + + identity TRIB_RATE_3050G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "3050G tributary signal rate"; + } + + identity TRIB_RATE_3100G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "3100G tributary signal rate"; + } + + identity TRIB_RATE_3150G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "3150G tributary signal rate"; + } + + identity TRIB_RATE_3200G { + base TRIBUTARY_RATE_CLASS_TYPE; + description + "3200G tributary signal rate"; + } + identity LOGICAL_ELEMENT_PROTOCOL_TYPE { description "Type of protocol framing used on the logical channel or From 0b4650082b8a1de57285408b50491dddf86eb136 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Tue, 26 Mar 2024 08:16:53 -0700 Subject: [PATCH 323/372] 800G Client Related Additions (#1079) * Add tributary types up to 3200G. * 800G updates --- .../openconfig-transport-types.yang | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index e78dc88f1..dc5699842 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,14 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.23.0"; + oc-ext:openconfig-version "0.24.0"; + + revision "2024-03-20" { + description + "FlexO support, 800G trib protocol, and OSFP + description update for 800G."; + reference "0.24.0"; + } revision "2024-03-12" { description @@ -808,6 +815,11 @@ module openconfig-transport-types { description "400G Ethernet protocol"; } + identity PROT_800GE { + base TRIBUTARY_PROTOCOL_TYPE; + description "800G Ethernet protocol"; + } + identity PROT_OTSIG { base TRIBUTARY_PROTOCOL_TYPE; description "Optical tributary signal group protocol"; @@ -818,6 +830,12 @@ module openconfig-transport-types { description "ODU Flex with CBR protocol"; } + identity PROT_FLEXO { + base TRIBUTARY_PROTOCOL_TYPE; + description + "FlexO protocol as defined in ITU-T G.709.1 and ITU-T G.709.3"; + } + identity PROT_ODUFLEX_GFP { base TRIBUTARY_PROTOCOL_TYPE; description "ODU Flex with GFP protocol"; @@ -998,7 +1016,7 @@ module openconfig-transport-types { base TRANSCEIVER_FORM_FACTOR_TYPE; description "Octal small form factor pluggable transceiver supporting - 400 Gb/s."; + 400 Gb/s or 800 Gb/s."; } identity NON_PLUGGABLE { From 33bd0407ee6ea4aa1ded0084b9611938dc00cbcd Mon Sep 17 00:00:00 2001 From: rszarecki <46606165+rszarecki@users.noreply.github.com> Date: Tue, 26 Mar 2024 16:46:26 -0700 Subject: [PATCH 324/372] ISIS graceful-restart timers and planned restart toggle (#1058) * Extending ISIS GR to support configuration of RFC5306/REFC8706 timers --- release/models/isis/openconfig-isis-lsp.yang | 8 +- .../models/isis/openconfig-isis-routing.yang | 8 +- release/models/isis/openconfig-isis.yang | 108 +++++++++++++++++- 3 files changed, 120 insertions(+), 4 deletions(-) diff --git a/release/models/isis/openconfig-isis-lsp.yang b/release/models/isis/openconfig-isis-lsp.yang index 04ac1dae3..707a8706e 100644 --- a/release/models/isis/openconfig-isis-lsp.yang +++ b/release/models/isis/openconfig-isis-lsp.yang @@ -34,7 +34,13 @@ submodule openconfig-isis-lsp { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "1.6.2"; + oc-ext:openconfig-version "1.7.0"; + + revision "2024-02-28" { + description + "ISIS graceful-restart timers and per-level configuration."; + reference "1.7.0"; + } revision "2024-02-20" { description diff --git a/release/models/isis/openconfig-isis-routing.yang b/release/models/isis/openconfig-isis-routing.yang index 12c243421..80a3154ff 100644 --- a/release/models/isis/openconfig-isis-routing.yang +++ b/release/models/isis/openconfig-isis-routing.yang @@ -20,7 +20,13 @@ submodule openconfig-isis-routing { description "This module describes YANG model for ISIS Routing"; - oc-ext:openconfig-version "1.6.2"; + oc-ext:openconfig-version "1.7.0"; + + revision "2024-02-28" { + description + "ISIS graceful-restart timers and per-level configuration."; + reference "1.7.0"; + } revision "2024-02-20" { description diff --git a/release/models/isis/openconfig-isis.yang b/release/models/isis/openconfig-isis.yang index d08e14d14..fcad2fb68 100644 --- a/release/models/isis/openconfig-isis.yang +++ b/release/models/isis/openconfig-isis.yang @@ -54,7 +54,13 @@ module openconfig-isis { +-> { levels config } +-> { level adjacencies }"; - oc-ext:openconfig-version "1.6.2"; + oc-ext:openconfig-version "1.7.0"; + + revision "2024-02-28" { + description + "ISIS graceful-restart timers and per-level configuration."; + reference "1.7.0"; + } revision "2024-02-20" { description @@ -925,7 +931,60 @@ module openconfig-isis { graceful restart procedures during its own restart, but supports retaining forwarding information during a remote speaker's restart."; } - reference "RFC 5306: Restart Signaling for IS-IS."; + + leaf non-planned-only { + type boolean; + description + "When this leaf is set to TRUE, planned restart procedures as + described in RFC 8706 are not used."; + reference + "RFC 5706: Restart Signaling for IS-IS"; + } + + reference + "RFC 5306: Restart Signaling for IS-IS; RFC 5706: Restart Signaling + for IS-IS"; + } + + grouping isis-graceful-restart-level-config { + description + "This grouping defines ISIS graceful restart configuration relevant + for ISIS level/LSDB"; + + leaf restart-time { + type uint16; + default 30; + description + "Value of RFC5306/RFC8706 T2 timer"; + } + + reference + "RFC 5306: Restart Signaling for IS-IS; RFC 5706: Restart Signaling + for IS-IS"; + } + + grouping isis-graceful-restart-interface-config { + description + "This grouping defines ISIS graceful restart configuration relevant + for ISIS interface/adjacency"; + + leaf interface-timer { + type uint16; + description + "Value of RFC5306/RFC8706 T1 timer"; + } + + leaf interface-time-expirations { + type int64; + description + "Number of times T1 expires before IIH without Restart TLV's RR flag + set is sent. That is GR helper is not supported by adjacents + Inermediate System"; + } + + reference + "RFC 5306: Restart Signaling for IS-IS; RFC 5706: Restart Signaling + for IS-IS"; } // configuration context containers @@ -1127,6 +1186,8 @@ module openconfig-isis { uses admin-config; uses isis-graceful-restart-config; + uses isis-graceful-restart-level-config; + uses isis-graceful-restart-interface-config; } container state { @@ -1136,6 +1197,8 @@ module openconfig-isis { uses admin-config; uses isis-graceful-restart-config; + uses isis-graceful-restart-level-config; + uses isis-graceful-restart-interface-config; } } @@ -1401,6 +1464,25 @@ module openconfig-isis { uses isis-bfd-config; } } + container graceful-restart { + description + "This container defines ISIS Graceful Restart for interface"; + + container config { + description + "This container defines interface config parameters for ISIS + graceful-restart."; + + uses isis-graceful-restart-interface-config; + } + container state { + config false; + description + "This container defines information for ISIS graceful-restart."; + + uses isis-graceful-restart-interface-config; + } + } } grouping isis-bfd-config { @@ -1494,6 +1576,28 @@ module openconfig-isis { uses isis-authentication-check-config; } + container graceful-restart { + description + "This container defines ISIS Graceful Restart."; + + container config { + description + "This container defines ISIS graceful-restart configuration."; + + uses admin-config; + uses isis-graceful-restart-level-config; + } + + container state { + config false; + description + "This container defines state information for ISIS graceful-restart."; + + uses admin-config; + uses isis-graceful-restart-level-config; + } + } + container system-level-counters { description "This container defines ISIS system level counters."; From 4f408783df925f4eb9d3bf7cd320c66cae4b6fb0 Mon Sep 17 00:00:00 2001 From: kcroussore <159063602+kcroussore@users.noreply.github.com> Date: Thu, 4 Apr 2024 18:22:00 -0700 Subject: [PATCH 325/372] Add media-channel expected-power to openconfig-channel-monitor (#1087) * Add media-channel target-power to openconfig-channel-monitor #1066 --- .../openconfig-channel-monitor.yang | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/release/models/optical-transport/openconfig-channel-monitor.yang b/release/models/optical-transport/openconfig-channel-monitor.yang index fff223b55..3623681c6 100644 --- a/release/models/optical-transport/openconfig-channel-monitor.yang +++ b/release/models/optical-transport/openconfig-channel-monitor.yang @@ -26,7 +26,13 @@ module openconfig-channel-monitor { channel monitor (OCM) for optical transport line system elements such as wavelength routers (ROADMs) and amplifiers."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + + revision "2024-04-04" { + description + "Add new leaf media-channel target-power."; + reference "0.5.0"; + } revision "2019-10-24" { description @@ -168,8 +174,16 @@ module openconfig-channel-monitor { description "Average measured optical power over the specified spectrum"; } - } + leaf target-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "Target optical power over the specified spectrum"; + } + } grouping media-channel-spectrum-power-top { description From 4177f941c54017b160da1839c65c74f1ebc9ed88 Mon Sep 17 00:00:00 2001 From: Mike Wiebe Date: Thu, 11 Apr 2024 19:35:36 -0400 Subject: [PATCH 326/372] Add support for vni-peer-group container (#1015) * Add support for /network-instances/network-instance/connection-points/connection-point/endpoints/endpoint/vxlan/endpoint-peers/vni-peer-groups container * deprecate control-plane-vnis, router-mac --- .../network-instance/openconfig-evpn.yang | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index d82ceffc6..3b201e809 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,13 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.7.0"; + oc-ext:openconfig-version "0.8.0"; + + revision "2024-04-03" { + description + "Add vni-peer-groups container"; + reference "0.8.0"; + } revision "2024-02-01" { description @@ -917,7 +923,50 @@ module openconfig-evpn { "Container for state parameters related to this VTEP peer"; uses evpn-endpoint-peer-state; uses evpn-endpoint-counters; - } + } + container vni-peer-groups { + config false; + description + "Container for associating ingress and egress VNIs to router MACs"; + list vni-peer-group { + key "cp-vni egress-vni"; + description + "List of VNI peer groups"; + leaf cp-vni { + type leafref { + path "../state/cp-vni"; + } + description + "A reference to the control-plane VNI for the VNI peer group"; + } + leaf egress-vni { + type leafref { + path "../state/egress-vni"; + } + description + "A reference to the egress VNI for the VNI peer group"; + } + + container state { + description "State container for the VNI peer group"; + config false; + + leaf cp-vni { + type oc-evpn-types:vni-id; + description + "The control-plane VNI discovered behind this peer VTEP"; + } + leaf egress-vni { + type oc-evpn-types:vni-id; + description "Egress VNI associated with the remote VTEP"; + } + leaf router-mac { + type oc-yang:mac-address; + description "MAC address of the remote VTEP"; + } + } + } + } } } @@ -988,6 +1037,7 @@ module openconfig-evpn { leaf-list control-plane-vnis { type oc-evpn-types:vni-id; + status deprecated; description "The control-plane VNIs are all of the VNIs that are discovered by the control-plane behind this peer VTEP"; @@ -995,6 +1045,7 @@ module openconfig-evpn { leaf router-mac { type oc-yang:mac-address; + status deprecated; description "MAC address of the remote VTEP"; } } From 28e102efd3986256ecfd820c4411e383b4b199b1 Mon Sep 17 00:00:00 2001 From: kcroussore <159063602+kcroussore@users.noreply.github.com> Date: Tue, 16 Apr 2024 10:46:09 -0700 Subject: [PATCH 327/372] Add OpenConfig Support for Configurable Media-Channel Compensation Range and ASE recovery offset #1067 (#1090) * Add config for attenuation-control-range and media-channel-injection-offset #1067 --- .../openconfig-wavelength-router.yang | 84 ++++++++++++++++++- 1 file changed, 83 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-wavelength-router.yang b/release/models/optical-transport/openconfig-wavelength-router.yang index eded5e217..2684521ee 100644 --- a/release/models/optical-transport/openconfig-wavelength-router.yang +++ b/release/models/optical-transport/openconfig-wavelength-router.yang @@ -41,7 +41,13 @@ module openconfig-wavelength-router { target spectrum power profile over the full spectrum instead of individual media channels."; - oc-ext:openconfig-version "1.1.0"; + oc-ext:openconfig-version "1.2.0"; + + revision "2024-04-08" { + description + "Add attenuation-control-range to media channel config"; + reference "1.2.0"; + } revision "2021-07-26" { description @@ -168,6 +174,29 @@ module openconfig-wavelength-router { within the order of minutes"; } + // identity statements + identity ATTENUATION_CONTROL_RANGE { + description + "The definition for different types of modes to specify + attenuation control range settings on a media channel"; + } + + identity CONTROL_RANGE_FULL { + base ATTENUATION_CONTROL_RANGE; + description + "Media channel power compensation range is not constrained, + and is limited by available WSS dynamic range. Operator does not + explicitly set the undershoot and overshoot compensation range"; + } + + identity CONTROL_RANGE_LIMITED { + base ATTENUATION_CONTROL_RANGE; + description + "Media channel undershoot and overshoot compensation ranges + are defined by max-undershoot-compensation and + max-overshoot-compensation"; + } + identity ASE_CONTROL_MODE { description "The definition for different types of ASE control modes @@ -554,6 +583,19 @@ module openconfig-wavelength-router { is configured"; } + leaf media-channel-injection-offset { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "Defines the optical power offset value relative to the + ASE injection threshold at which point ASE should be removed + and the media-channel should be injected. Requires + ase-injection-delta or ase-injection-threshold to be + configured"; + } + leaf attenuation-control-mode { type identityref { base ATTENUATION_CONTROL_MODE; @@ -563,6 +605,46 @@ module openconfig-wavelength-router { The control mode defines the behavior of how the attenuation across a media channel is set"; } + + leaf attenuation-control-range { + type identityref { + base ATTENUATION_CONTROL_RANGE; + } + description + "Sets the attenuation control range for the media channel. + The control range defines the amount of media channel + undershoot and overshoot compensation that will be applied + when performing power targeting to meet the defined output + port spectrum power profile"; + } + + leaf max-undershoot-compensation { + type decimal64 { + fraction-digits 2; + } + when "../attenuation-control-range = 'CONTROL_RANGE_LIMITED'"; + units dB; + description + "Defines the maximum allowable WSS attenuation adjustment + the system will use to compensate a channel with input power + lower than the defined target power at the input. This value + is measured relative to the baseline WSS attenuation + established for an individual media-channel"; + } + + leaf max-overshoot-compensation { + type decimal64 { + fraction-digits 2; + } + when "../attenuation-control-range = 'CONTROL_RANGE_LIMITED'"; + units dB; + description + "Defines the maximum allowable WSS attenuation adjustment + the system will use to compensate a channel with input power + higher than the defined target power at the input. This + value is measured relative to the baseline WSS attenuation + established for an individual media-channel"; + } } grouping media-channel-state { From b493367ef30d11978237cea51ec81da87204558c Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 17 Apr 2024 09:30:47 -0700 Subject: [PATCH 328/372] replace backtick with apostrophe (#1089) --- .../models/interfaces/openconfig-interfaces.yang | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/release/models/interfaces/openconfig-interfaces.yang b/release/models/interfaces/openconfig-interfaces.yang index 3c94df5be..2cf2bdc84 100644 --- a/release/models/interfaces/openconfig-interfaces.yang +++ b/release/models/interfaces/openconfig-interfaces.yang @@ -51,7 +51,14 @@ module openconfig-interfaces { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "3.7.0"; + oc-ext:openconfig-version "3.7.1"; + + revision "2024-04-04" { + description + "Use single quotes in descriptions."; + reference + "3.7.1"; + } revision "2023-11-06" { description @@ -520,7 +527,7 @@ module openconfig-interfaces { units milliseconds; default 0; description - "Maximum time an interface can remain damped since the last link down event no matter how unstable it has been prior to this period of stability. In a damped state, the interface’s state change will not be advertised."; + "Maximum time an interface can remain damped since the last link down event no matter how unstable it has been prior to this period of stability. In a damped state, the interface's state change will not be advertised."; } leaf decay-half-life { @@ -528,7 +535,7 @@ module openconfig-interfaces { units milliseconds; default 0; description - "The amount of time after which an interface’s penalty is decreased by half. Decay-half-time should not be more than max-suppress-time."; + "The amount of time after which an interface's penalty is decreased by half. Decay-half-time should not be more than max-suppress-time."; } leaf suppress-threshold { @@ -1326,4 +1333,4 @@ module openconfig-interfaces { uses interfaces-top; -} \ No newline at end of file +} From 7e546dec00d95ba76ffb7b24d728b230ce8dc7ec Mon Sep 17 00:00:00 2001 From: Shashank-arista <153792517+Shashank-arista@users.noreply.github.com> Date: Wed, 17 Apr 2024 22:27:44 +0530 Subject: [PATCH 329/372] Augmented attributes interface-ref and metric fields to mpls-static lsp (#1021) * Add interface-ref and metric fields to mpls-static lsp --- release/models/mpls/openconfig-mpls-igp.yang | 9 ++++++++- .../models/mpls/openconfig-mpls-static.yang | 19 ++++++++++++++++++- release/models/mpls/openconfig-mpls-te.yang | 9 ++++++++- .../models/mpls/openconfig-mpls-types.yang | 9 ++++++++- release/models/mpls/openconfig-mpls.yang | 9 ++++++++- 5 files changed, 50 insertions(+), 5 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index e71c26657..6bbbf1cd8 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,14 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-12-14" { + description + "Added additional attributes oc-if:interface-ref + and metric attributes to static lsp"; + reference "3.5.0"; + } revision "2023-07-25" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index 0a60e9628..d114fe16c 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -10,6 +10,7 @@ submodule openconfig-mpls-static { import openconfig-mpls-types {prefix oc-mplst; } import openconfig-inet-types { prefix inet; } import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix oc-if; } // meta @@ -23,7 +24,14 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-12-14" { + description + "Added additional attributes oc-if:interface-ref + and metric attributes to static lsp"; + reference "3.5.0"; + } revision "2023-07-25" { description @@ -170,6 +178,15 @@ submodule openconfig-mpls-static { "label value to push at the current hop for the LSP"; } + + // interface-ref + uses oc-if:interface-ref-common; + + leaf metric { + type uint8; + description + "Specifies metric value used for the MPLS route"; + } } grouping static-lsp-ingress-config { diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index 2fe988e1a..4b12dc66e 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,14 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-12-14" { + description + "Added additional attributes oc-if:interface-ref + and metric attributes to static lsp"; + reference "3.5.0"; + } revision "2023-07-25" { description diff --git a/release/models/mpls/openconfig-mpls-types.yang b/release/models/mpls/openconfig-mpls-types.yang index 1df30b3b9..765e467cf 100644 --- a/release/models/mpls/openconfig-mpls-types.yang +++ b/release/models/mpls/openconfig-mpls-types.yang @@ -19,7 +19,14 @@ module openconfig-mpls-types { description "General types for MPLS / TE data model"; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-12-14" { + description + "Added additional attributes oc-if:interface-ref + and metric attributes to static lsp"; + reference "3.5.0"; + } revision "2021-12-01" { description diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index dde71fba3..f78e1a0ec 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -70,7 +70,14 @@ module openconfig-mpls { +------+ |ROUTING| +-----+ +-------+ "; - oc-ext:openconfig-version "3.4.0"; + oc-ext:openconfig-version "3.5.0"; + + revision "2023-12-14" { + description + "Added additional attributes oc-if:interface-ref + and metric attributes to static lsp"; + reference "3.5.0"; + } revision "2023-07-25" { description From bf857b7f09425b8e1b88e64745315d9b5e816b46 Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Thu, 25 Apr 2024 09:26:03 -0600 Subject: [PATCH 330/372] jakesnyder-1097 adding INACTIVE to client_state #1098 (#1099) * jakesnyder-1097 adding INACTIVE to client_state * jakesnyder-1097 adding INACTIVE to client_state * jakesnyder-1097 adding INACTIVE to client_state --- release/models/wifi/openconfig-wifi-types.yang | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-types.yang b/release/models/wifi/openconfig-wifi-types.yang index 30e358ae3..225cc2a76 100644 --- a/release/models/wifi/openconfig-wifi-types.yang +++ b/release/models/wifi/openconfig-wifi-types.yang @@ -22,7 +22,13 @@ module openconfig-wifi-types { that are used in the openconfig-wifi modules. It can be imported by any module to make use of these types."; - oc-ext:openconfig-version "1.1.2"; + oc-ext:openconfig-version "1.1.3"; + + revision "2024-04-25" { + description + "Adding INACTIVE client_state"; + reference "1.1.3"; + } revision "2023-09-01" { description @@ -154,6 +160,13 @@ module openconfig-wifi-types { (signature) mechanisms."; } + identity INACTIVE { + base CLIENT_STATE; + description + "Client is no longer active in the 802.11 state machine. Client data + remains in the client state, but client is no longer active on AP."; + } + identity AP_STATE { description "The Up/Down state of an AP."; } From e519064497caace8e7b92a519d7be802423fb6c5 Mon Sep 17 00:00:00 2001 From: romeyod <78448014+romeyod@users.noreply.github.com> Date: Tue, 30 Apr 2024 12:09:11 -0400 Subject: [PATCH 331/372] Add `gre` container under next-hops aft entry state. Add `src-ip`, `dst-ip` and `ttl` under `gre` aft entry state for telemetry. (#1038) * Add gre container under next-hops aft entry state. Add src-ip, dst-ip and ttl under gre aft entry state for telemetry. --------- Co-authored-by: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Co-authored-by: Darren Loher --- release/models/aft/openconfig-aft-common.yang | 57 ++++++++++++++++++- .../models/aft/openconfig-aft-ethernet.yang | 10 +++- release/models/aft/openconfig-aft-ipv4.yang | 10 +++- release/models/aft/openconfig-aft-ipv6.yang | 10 +++- release/models/aft/openconfig-aft-mpls.yang | 10 +++- release/models/aft/openconfig-aft-pf.yang | 10 +++- .../aft/openconfig-aft-state-synced.yang | 10 +++- release/models/aft/openconfig-aft.yang | 10 +++- 8 files changed, 118 insertions(+), 9 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index 51e527edd..ac924b67c 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,16 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry. Updated description for + tunnel-src-ip-address properties under next-hops."; + reference "2.5.0"; + } revision "2023-09-26" { description @@ -213,6 +222,22 @@ submodule openconfig-aft-common { } } + container gre { + description + "When specified, the packet has an GRE + (Generic Routing Encapsulation)header applied to + it before forwarding to the specified next-hop. + encapsulate-header leaf should be set to GRE for this + to apply"; + + container state { + config false; + description + "State parameters relating to GRE encapsulation."; + uses aft-common-entry-nexthop-gre-state; + } + } + uses oc-if:interface-ref-state; } } @@ -269,7 +294,7 @@ submodule openconfig-aft-common { leaf tunnel-src-ip-address { type oc-inet:ip-address; description - "Where applicable this represents the tunnel source ip address. + "Where applicable this represents the vxlan tunnel source ip address. For VXLAN this represents the source VTEP ip address"; } } @@ -385,6 +410,34 @@ submodule openconfig-aft-common { } } + grouping aft-common-entry-nexthop-gre-state { + description + "GRE encapsulation applied on a IPv4 and IPv6 next-hop."; + + leaf src-ip { + type oc-inet:ip-address; + description + "The source IP address for the GRE encapsulation may be expressed + using this leaf (src-ip) or if may be derived from + '../../interface-ref/state/subinterface'"; + } + + leaf dst-ip { + type oc-inet:ip-address; + description + "Destination IP address to use for the encapsulated packet."; + } + + leaf ttl { + type uint8; + description + "This leaf reflects the configured/default TTL value that is used in the + outer header during packet encapsulation. When this leaf is not set, + the TTL value of the inner packet is copied over as the outer packet's + TTL value during encapsulation."; + } + } + grouping aft-common-install-protocol { description "Grouping for a common reference to the protocol which diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 196447d97..2845c9383 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,15 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index c887857cc..f6152aca8 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,15 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 85ac46a97..1976a7271 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,15 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 6f07233e2..77091afa4 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,7 +21,15 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index 125b3d9a2..fc72ece6e 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,15 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index 76f35975d..166ad7ead 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,15 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 4af67e426..011956948 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,15 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.4.0"; + oc-ext:openconfig-version "2.5.0"; + + revision "2024-01-26" { + description + "Add gre container under next-hops aft entry state. + Add src-ip, dst-ip and ttl under gre aft entry state + for telemetry."; + reference "2.5.0"; + } revision "2023-09-26" { description From 130ef96dacaa319dc32ee581c971b5f249fa5166 Mon Sep 17 00:00:00 2001 From: hyun-arista <152904206+hyun-arista@users.noreply.github.com> Date: Tue, 30 Apr 2024 11:28:02 -0500 Subject: [PATCH 332/372] Adding configuration and operation state for interface rates (#1012) --- release/models/interfaces/.spec.yml | 2 + .../interfaces/openconfig-if-rates.yang | 114 ++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 release/models/interfaces/openconfig-if-rates.yang diff --git a/release/models/interfaces/.spec.yml b/release/models/interfaces/.spec.yml index 9535719e6..2e66f339e 100644 --- a/release/models/interfaces/.spec.yml +++ b/release/models/interfaces/.spec.yml @@ -8,6 +8,7 @@ - yang/interfaces/openconfig-if-poe.yang - yang/interfaces/openconfig-if-ip-ext.yang - yang/interfaces/openconfig-if-8021x.yang + - yang/interfaces/openconfig-if-rates.yang - yang/vlan/openconfig-vlan.yang - yang/interfaces/openconfig-if-tunnel.yang - yang/platform/openconfig-platform-port.yang @@ -26,6 +27,7 @@ - yang/interfaces/openconfig-if-poe.yang - yang/interfaces/openconfig-if-ip-ext.yang - yang/interfaces/openconfig-if-8021x.yang + - yang/interfaces/openconfig-if-rates.yang - yang/vlan/openconfig-vlan.yang - yang/interfaces/openconfig-if-tunnel.yang - yang/platform/openconfig-platform-port.yang diff --git a/release/models/interfaces/openconfig-if-rates.yang b/release/models/interfaces/openconfig-if-rates.yang new file mode 100644 index 000000000..78d972e14 --- /dev/null +++ b/release/models/interfaces/openconfig-if-rates.yang @@ -0,0 +1,114 @@ +module openconfig-if-rates { + + yang-version "1"; + + namespace "http://openconfig.net/yang/interfaces/rates"; + + prefix "oc-if-rates"; + + import openconfig-extensions { prefix oc-ext; } + import openconfig-interfaces { prefix "oc-if"; } + + organization + "OpenConfig working group"; + + contact + "www.openconfig.net"; + + description + "This module adds configuration and operational state for interface rates."; + + oc-ext:openconfig-version "0.1.0"; + + revision 2024-04-02 { + description + "Augment of /interfaces/interface to include interface rates."; + reference + "0.1.0"; + } + + grouping interface-rates-config { + description + "Grouping of interface rates related configuration"; + + leaf load-interval { + type uint16 { + range "1..600"; + } + units "seconds"; + default 300; + description + "The interval of interface rates calculation in seconds"; + } + } + + grouping interface-rates-state { + description + "Grouping of interface rates with different direction and units"; + + leaf load-interval { + type uint16; + units "seconds"; + description + "The interval of interface rates calculation in seconds"; + } + + leaf out-bits-rate { + type uint64; + units "bps"; + description + "The calculated transmitted rate of the interface, measured in bits + per second."; + } + + leaf in-bits-rate { + type uint64; + units "bps"; + description + "The calculated received rate of the interface, measured in bits + per second."; + } + + leaf out-pkts-rate { + type uint64; + units "pps"; + description + "The calculated transmitted rate of the interface, measured in packets + per second."; + } + + leaf in-pkts-rate { + type uint64; + units "pps"; + description + "The calculated received rate of the interface, measured in packets + per second."; + } + } + + augment "/oc-if:interfaces/oc-if:interface" { + description + "Adds interface rates."; + + container rates { + description + "Enclosing container for interface rates."; + + container config { + description + "Enclosing container for interface rates related configuration"; + + uses interface-rates-config; + } + + container state { + config false; + description + "Enclosing container for operational state representing + interface rates."; + + uses interface-rates-state; + } + } + } +} From cd61659ae8f8c34fc1d94a9dab0d0785ad5babe4 Mon Sep 17 00:00:00 2001 From: sachendras <44847441+sachendras@users.noreply.github.com> Date: Tue, 30 Apr 2024 09:31:36 -0700 Subject: [PATCH 333/372] Add rules for controller-card power-off (#1041) * Update openconfig-platform.yang Add rules for controller-card power-off. Internal doc go/controller_card_gnmi_shutdown for more context. --------- Co-authored-by: Darren Loher --- doc/controller-card_poweroff.md | 165 ++++++++++++++++++ doc/img/controller_card.png | Bin 0 -> 152474 bytes .../platform/openconfig-platform-common.yang | 14 +- .../openconfig-platform-controller-card.yang | 18 +- .../platform/openconfig-platform-types.yang | 56 +++++- .../models/platform/openconfig-platform.yang | 38 +++- 6 files changed, 280 insertions(+), 11 deletions(-) create mode 100644 doc/controller-card_poweroff.md create mode 100644 doc/img/controller_card.png diff --git a/doc/controller-card_poweroff.md b/doc/controller-card_poweroff.md new file mode 100644 index 000000000..db2ecf762 --- /dev/null +++ b/doc/controller-card_poweroff.md @@ -0,0 +1,165 @@ + + +## Controller Card Power Control + +This document describes operational use cases, rules and telemetry for power control of `CONTROLLER-CARD` components in network devices using OpenConfig. + + +## Operational use cases for CONTROLLER_CARD power control + +1. Operator suspects a network device issue is occurring due to faults on a CONTROLLER_CARD. The operator wants to quickly disable the CONTROLLER_CARD and later, troubleshoot the issue in a maintenance window. The operator also wants to ensure that the card stays disabled even if the device is rebooted. Some example scenarios below: + + a. It is possible that the faulty controller card is in a boot loop and the operator finds it best to disable the card to prevent undesired state. Expectations are also that the power remains disabled even after a system reboot. + + b. CPU overheating, memory errors or other hardware problems with the PRIMARY card may require the operator to proactively power-off the card and not let it be online during regular operation until replacement of the hardware is completed. + +2. Operator feels it important to keep the card shutdown to prevent unexpected outcomes post the physical swap of the faulty/alerting card so the operator can online the card in a controlled environment post replacement. + + +## CONTROLLER_CARD power and redundancy requirements + +Electrical power for a CONTROLLER_CARD can be configured off using the OC-Path [/components/component/controller-card/config/power-admin-state](https://openconfig.net/projects/models/schemadocs/yangdoc/openconfig-platform.html#components-component-controller-card-config-power-admin-state) and setting its value to POWER\_DISABLED. The following rules regarding CONTROLLER_CARD redundancy and changes to `power-admin-state` must be followed by the device: + + + +1. Only a CONTROLLER_CARD in `state/redundant-role` 'SECONDARY' will honor a change in `config/power-admin-state` to POWER_DISABLED. If the controller-card's `redundant-role` is 'PRIMARY', and its `config/power-admin-state` is set to 'POWER_DISABLED', the NOS must allow the configuration. However, the `state/power-admin-state` must remain as 'POWER_ENABLED'. A change in `state/power-admin-state` must take effect only on the next reboot or if the CONTROLLER_CARD is 'SECONDARY'. Examples of scenarios include: + +### Scenario 1 - Power off a secondary CONTROLLER_CARD + +Let's say controller-card0 is PRIMARY and controller-card1 is SECONDARY and controller-card1 receives an operator driven change of config/power-admin-state = POWER_DISABLED, then controller-card0 will power-off controller-card1 immediately. The leaf state/power-admin-state for controller-card1 must also be POWER_DISABLED. The 'state/last-poweroff-reason/trigger' should show as USER_INITIATED. The NOS may optionally update state/last-poweroff-reason/details. state/last-poweroff-time should record the time when the card was powered-off. For example: + +``` +/components/component[name=controller0]/state/redundant-role, PRIMARY +/components/component[name=controller0]/controller-card/config/power-admin-state, POWER_ENABLED +/components/component[name=controller0]/controller-card/state/power-admin-state, POWER_ENABLED +/components/component[name=controller1]/state/redundant-role, SECONDARY +/components/component[name=controller1]/controller-card/config/power-admin-state, POWER_DISABLED +/components/component[name=controller1]/controller-card/state/power-admin-state, POWER_DISABLED +/components/component[name=controller1]/state/last-poweroff-reason/trigger, USER_INITIATED +/components/component[name=controller1]/state/last-poweroff-reason/details, "User initiated Shutdown" +/components/component[name=controller1]/state/last-poweroff-time, 1706590714681765937 +``` + +### Scenario 2 - Power off primary CONTROLLER_CARD + +1. If controller-card0 is PRIMARY and controller-card1 is SECONDARY and if controller-card0 is set to config/power-admin-state = POWER_DISABLED by an operator, then controller-card0 will stay powered-on until the next reboot. `state/power-admin-state` must show as POWER_ENABLED. If a reboot of the PRIMARY CONTROLLER_CARD occurs, `state/last-poweroff-time` must record the time when the card powers-off, `state/last-poweroff-reason/trigger` must show as USER_INITIATED and `/state/last-poweroff-reason/details` may be updated. For example: + +When controller-card0 is PRIMARY: + +``` +/components/component[name=controller0]/state/redundant-role, PRIMARY +/components/component[name=controller0]/controller-card/config/power-admin-state, POWER_DISABLED +/components/component[name=controller0]/controller-card/state/power-admin-state, POWER_ENABLED +/components/component[name=controller1]/state/redundant-role, SECONDARY +/components/component[name=controller1]/controller-card/state/power-admin-state, POWER_ENABLED +``` + +After controller-card0 transitions to redundant-role SECONDARY: + +``` +/components/component[name=controller0]/state/redundant-role, SECONDARY +/components/component[name=controller0]/controller-card/config/power-admin-state, POWER_DISABLED +/components/component[name=controller0]/controller-card/state/power-admin-state, POWER_DISABLED +/components/component[name=controller0]/state/last-poweroff-reason/trigger, USER_INITIATED +/components/component[name=controller0]/state/last-poweroff-reason/details, "User initiated Shutdown" +/components/component[name=controller0]/state/last-poweroff-time, 1706590714681765937 +/components/component[name=controller1]/state/redundant-role, PRIMARY +/components/component[name=controller1]/controller-card/config/power-admin-state, POWER_ENABLED +/components/component[name=controller1]/controller-card/state/power-admin-state, POWER_ENABLED +``` + +2. A controller-card which is in state/redundant-role=SECONDARY and is config/power-admin-state=POWER_DISABLED must remain powered off, even after a reboot. It is possible that after a reboot, both the controller cards are powered-on. However as soon as the configuration is loaded, the system must power-off the subject controller-card. + +3. A CONTROLLER_CARD in redundant-role SECONDARY and state/power-admin-state = POWER_DISABLED cannot transition to redundant-role PRIMARY. If the PRIMARY CONTROLLER_CARD goes down, the device will be offline. + +4. When a controller card boots up and loads it’s configuration, power-admin-state may be set to POWER_DISABLED. The CONTROLLER_CARD must then power off and never enter into any controller card primary/secondary election process. This also means that an implementation shouldn't start a controller card election process until the configuration is loaded and consumed. + + **Note:-** If an implementation's architecture do not allow for controlling the order in which the configuration is loaded and the PRIMARY/SECONDARY election process, then this rule can be relaxed as long as the implementation has proper arrangements to power-off the controller-card with `config/power-admin-state=POWER_DISABLED` configuration during reboots (Warm/Cold). + + +5. On boot (cold or warm), if the chassis has a single controller card and it is configured for config/power-admin-state=POWER_DISABLED, it must continue with the boot process ignoring the configuration. As per Rule#1 above, the controller-card must have it's state/power-admin-state as POWER_ENABLED given that a single CONTROLLER_CARD will have it's state/redundant-role=PRIMARY. In this case too, the system must log a message using severity "Warning", to inform the Operator about the situation. + +6. In a Dual controller-card scenario, if a config is pushed for config/power-admin-state=POWER_DISABLED for either both controller-cards simultaneously or for one of the controller-cards while the other controller-card in the system is already configured for config/power-admin-state=POWER_DISABLED, then the implementation Must fail the configuration commit operation with an error similar to: "Not allowed to have both controller-cards configured for power-admin-state = POWER_DISABLED" + +## Flowchart on the Rules above: + +![Overview of the expected behavior](https://github.com/openconfig/public/tree/master/doc/img/controller_card.png?raw=true) + +## Concerns and possible failure scenarios + +1. If a PRIMARY card malfunctions and ends up in a bootloop, would this approach help? + + **Response:** + + + In this scenario the expectations are that the implementation takes steps to initiate a controller-card switchover operation. Therefore, the standby controller card takes over the PRIMARY role and the system stabilizes allowing for gRPC connections to be established. In this situation if the operator pushes a configuration to shutdown the SECONDARY card, the PRIMARY card must be able to power-off the SECONDARY controller-card. In this scenario, the implementation (depending on their architecture) may also initiate a shutdown of the faulty card from the new PRIMARY card. + +2. Since the operation relies on configuration, it is possible that the failure scenario may kick in before the configuration takes effect post a reboot. + + **Response:** + + + Response here is the same as "1" above. + + + +3. Both controller-cards are functional and the the secondary controller card is attempted to be powered off. + + **Response:** + + + The shutdown can be initiated by pushing the command [/components/component[controller-card#]/controller-card/config/power-admin-state = POWER\_DISABLED](https://openconfig.net/projects/models/schemadocs/yangdoc/openconfig-platform.html#components-component-controller-card-config-power-admin-state) to the box. As a result, the secondary controller card whose [/components/component/state/redundant-role](https://openconfig.net/projects/models/schemadocs/yangdoc/openconfig-platform.html#components-component-state-redundant-role) is SECONDARY will be shutdown and its [/components/component[name="my_secondary_controller-card"]/controller-card/state/power-admin-state](https://openconfig.net/projects/models/schemadocs/yangdoc/openconfig-platform.html#components-component-controller-card-state-power-admin-state) will change to "POWER\_DISABLED". If the configuration is saved and when the device reboots, the subject controller-card is expected to remain powered off. + +4. Both controller-cards are functional and the the primary controller card is attempted to be shutdown + + **Response:** + + + Follow Rule#1 above + +5. Only one controller-card is present and the card is attempted to be shutdown. + + **Response:** + + + Since the lone controller-card is PRIMARY, please follow Rule#1 above. After reboot, please follow Rule#5 + +6. Faulty card is shutdown and then replaced with a working card but device still has the config of `/components/component[controller-card#]/controller-card/config/power-admin-state = POWER_DISABLED` + + **Response:** + + + The new card must remain powered off. Power should only be enabled on the new card by a configuration change to set `/components/component[controller-card#]/controller-card/config/power-admin-state = POWER_ENABLED` + + +7. Both controller-cards present during the initial boot operation. However, the controller card that is configured as "POWER\_DISABLED" boots up sooner than the other card and takes over the ACTIVE role. + + **Response:** + + + Follow Rule#4 above. The only exception is when it is the only controller card in the chassis. In the latter case, Rule#5 above must be followed. + + +8. Say we have a situation whereby, A dual controller card device is functional, secondary is powered off by changing power-admin-state to POWER\_DISABLED. Later, the PRIMARY card is removed and the system goes offline. If the device is rebooted (for example via externally removing and reapplying power ), what should happen? + + **Response:** + + If during reboot the device continues to have a single controller-card, then Rule#5 above should be followed. + +9. According to Rule#5, a controller-card must ignore the configuration of `config/power-admin-state=POWER_DISABLED` and must continue with its boot process if it is the only controller-card in the chassis. This also means that, under split-brain situations when the communication between the controller-cards is broken, the option to use `config/power-admin-state=POWER_DISABLED` for one of the cards may not help post reboot? + + **Response** + + Lets walk through this situation to set the right context. We have a dual controller-card system which due to some reason (Hardware/Soaftware failure) got in to a split-brain scenaio. As per the question here, the operator decides to use `config/power-admin-state=POWER_DISABLED` command on one of the cards, somehow intiatiates a reboot process (Cold or Warm) and expects that the controller-card with `config/power-admin-state=POWER_DISABLED` stays disabled post reboot. There are several assumptions and nuances to this situation: + + a. One of the assumptions is that, the device is in a split-brain situation and would still allow connections for a configuration change. + + b. If somehow "9.a" above works, since both the controller-cards expect to be the master, none will power-down immediately as per Rule#1 above. Therefore the Chassis would need to be cold booted. + +Now after the system reboots following "9.b", if we consider that the original problem of broken communication between the controller-cards persists, the configration of `config/power-admin-state=POWER_DISABLED` on one of the controller-cards wouldn't help because of Rule#5 above. However, it is expected that the implementation has other hardware/software means to gracefully handle the split-brain situation. The proposal here to allow for power-disable of a controller-card using configuration has no impact whatsoever on the implementations ability to handle split-brain like conditions. + + ***Definition for Split-brain situation:*** + `In network routers/switches that use redundant controller-cards for high availability, a split-brain scenario occurs when the primary and secondary cards lose communication with each other, and both believe they should be the active controller. Probable causees for a Split-brain scenario can be configuration error or software bug preventing exchange of control messages between the cards breaking the communication` + + + diff --git a/doc/img/controller_card.png b/doc/img/controller_card.png new file mode 100644 index 0000000000000000000000000000000000000000..4599258dd4620ba343a00b2a33d042e24cea2bb4 GIT binary patch literal 152474 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 SjIIt7_|n4}{#&GD8}T1~_^#yu literal 0 HcmV?d00001 diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index afb533067..fd121c09d 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.24.0"; + oc-ext:openconfig-version "0.25.0"; + + revision "2024-01-30" { + description + "Updated description for component-power-type"; + reference "0.25.0"; + } revision "2023-11-28" { description @@ -232,7 +238,11 @@ submodule openconfig-platform-common { type oc-platform-types:component-power-type; default POWER_ENABLED; description - "Enable or disable power to the component"; + "When set to POWER_DISABLED, the component should be shut down by removing + electrical power. This is intended to be used to prevent the component + from becoming active even after a reboot of the system. A component + (if controller-card) may not honor power-admin-state depending on rules + defined in the description of the component config container."; } } diff --git a/release/models/platform/openconfig-platform-controller-card.yang b/release/models/platform/openconfig-platform-controller-card.yang index 1bea20fe3..4ed5156c7 100644 --- a/release/models/platform/openconfig-platform-controller-card.yang +++ b/release/models/platform/openconfig-platform-controller-card.yang @@ -22,7 +22,13 @@ module openconfig-platform-controller-card { "This module defines data related to CONTROLLER_CARD components in the openconfig-platform model"; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; + + revision "2024-04-10" { + description + "Added details on power-admin-state leaf"; + reference "0.2.0"; + } revision "2022-07-28" { description @@ -58,8 +64,14 @@ module openconfig-platform-controller-card { augment "/oc-platform:components/oc-platform:component/" + "oc-platform:controller-card/oc-platform:config" { description - "Adding controller card data to physical inventory. This subtree - is only valid when the type of the component is CONTROLLER_CARD."; + "Configuration data for controller card components. + A controller-card can be configured for persistent powered-off + mode using the config/power-admin-state leaf. The reference + path below defines rules for such a configuration."; + + reference + "Rules around power-off configuration in controller-cards: + https://github.com/openconfig/public/blob/master/doc/controller-card_poweroff.md"; uses controller-card-config; } diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index d28881f9e..05bc4c306 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,13 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.6.0"; + oc-ext:openconfig-version "1.7.0"; + + revision "2024-01-30" { + description + "Add component-last-poweroff-reason grouping"; + reference "1.7.0"; + } revision "2023-06-27" { description @@ -218,6 +224,34 @@ module openconfig-platform-types { uses oc-types:min-max-time; } + grouping component-last-poweroff-reason { + description + "Common grouping for recording the reason of a component's + power-off state"; + + leaf trigger { + type component-last-poweroff-reason-trigger; + description + "Records the generic triggers for the last poweroff + event. Component power-off can be triggered + in various ways, + - USER_INITIATED + - SYSTEM_INITIATED + - POWER_FAILURE + This field is not updated during reboots; those are + tracked in the 'last-reboot-reason' leaf."; + } + + leaf details { + type string; + description + "Provides a detailed reason for component power-off. + For system-initiated power-offs, this field can include + specific causes (e.g., critical errors resulting in a + controller-card bootloop)."; + } + } + grouping component-redundant-role-switchover-reason { description "Common grouping for recording the reason of a component's @@ -538,4 +572,24 @@ module openconfig-platform-types { description "Records how the role switchover is triggered."; } + + typedef component-last-poweroff-reason-trigger { + type enumeration { + enum USER_INITIATED { + description + "User initiated the power-off, e.g. via command line."; + } + enum SYSTEM_INITIATED { + description + "The system initiated the power-off, e.g. due to + critical errors in the component of the primary role."; + } + enum POWER_FAILURE { + description + "The last power-off was due to power failure."; + } + } + description + "Records how the last power-off was triggered."; + } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index bbcf931a6..61b1426fd 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,15 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.24.0"; + oc-ext:openconfig-version "0.25.0"; + + revision "2024-01-30" { + description + "Add rules for controller-card power-off + Also introduces last-poweroff-reason container + and last-poweroff-time leaf"; + reference "0.25.0"; + } revision "2023-11-28" { description @@ -531,6 +539,27 @@ module openconfig-platform { this reports the role of the component."; } + container last-poweroff-reason { + description + "Records last power-off reason for a component."; + + uses oc-platform-types:component-last-poweroff-reason; + } + + leaf last-poweroff-time { + type oc-types:timeticks64; + units "nanoseconds"; + description + "This records the last time a component was directly powered + down. The value is a Unix Epoch timestamp (nanoseconds since + Jan 1, 1970 00:00:00 UTC). Component power-off can be: + - USER_INITIATED + - SYSTEM_INITIATED + - POWER_FAILURE + This field is not updated during reboots; those are tracked + in the 'last-reboot-time' leaf."; + } + container last-switchover-reason { description "For components that have redundant roles (e.g. two @@ -567,7 +596,8 @@ module openconfig-platform { description "This reports the time of the last reboot of the component. The value is the timestamp in nanoseconds relative to the Unix Epoch - (Jan 1, 1970 00:00:00 UTC)."; + (Jan 1, 1970 00:00:00 UTC). This timer is not updated during + power shutdowns; those are tracked in 'last-poweroff-time' leaf."; } leaf switchover-ready { @@ -1142,9 +1172,7 @@ module openconfig-platform { container config { description - "Configuration data for controller card components. Note that disabling - power to the primary supervisor should be rejected, and the operator is - required to perform a switchover first."; + "Configuration data for controller card components."; } container state { From a2c7a09e619c56782b3f4495a065fd7c34ef1175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar=20Gonz=C3=A1lez=20de=20Dios?= Date: Tue, 30 Apr 2024 11:06:48 -0700 Subject: [PATCH 334/372] Configure BFD min interval, multipleir when activated in protocols (#856) * Added the options to configure BFD in protocols Min-tx-interval, required-minimum-receive and multiplier added for the case when BFD is activated at a protocol --- release/models/bfd/openconfig-bfd.yang | 93 +++++++++++++++----------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/release/models/bfd/openconfig-bfd.yang b/release/models/bfd/openconfig-bfd.yang index 481021d33..8f5041b79 100644 --- a/release/models/bfd/openconfig-bfd.yang +++ b/release/models/bfd/openconfig-bfd.yang @@ -26,7 +26,14 @@ module openconfig-bfd { "An OpenConfig model of Bi-Directional Forwarding Detection (BFD) configuration and operational state."; - oc-ext:openconfig-version "0.2.6"; + oc-ext:openconfig-version "0.3.0"; + + revision "2024-03-05" { + description + "Add configuration of min interval, multiplier when + BFD is enabled at protocol level"; + reference "0.3.0"; + } revision "2023-08-09" { description @@ -220,43 +227,7 @@ module openconfig-bfd { interface."; } - leaf desired-minimum-tx-interval { - type uint32; - units microseconds; - description - "The minimum interval between transmission of BFD control - packets that the operator desires. This value is advertised to - the peer, however the actual interval used is specified by - taking the maximum of desired-minimum-tx-interval and the - value of the remote required-minimum-receive interval value. - - This value is specified as an integer number of microseconds."; - } - - leaf required-minimum-receive { - type uint32; - units microseconds; - description - "The minimum interval between received BFD control packets that - this system should support. This value is advertised to the - remote peer to indicate the maximum frequency (i.e., minimum - inter-packet interval) between BFD control packets that is - acceptable to the local system."; - } - - // rjs: Could have required-minimum-echo-receive here, but this is - // generally not configurable. - - leaf detection-multiplier { - type uint8 { - range "1..max"; - } - description - "The number of packets that must be missed to declare this - session as down. The detection interval for the BFD session - is calculated by multiplying the value of the negotiated - transmission interval by this value."; - } + uses bfd-configuration; leaf enable-per-member-link { type boolean; @@ -698,6 +669,49 @@ module openconfig-bfd { } } + grouping bfd-configuration { + description + "Configuration parameters of BFD when it is enabled in protocols."; + leaf desired-minimum-tx-interval { + type uint32; + units microseconds; + description + "The minimum interval between transmission of BFD control + packets that the operator desires. This value is advertised to + the peer, however the actual interval used is specified by + taking the maximum of desired-minimum-tx-interval and the + value of the remote required-minimum-receive interval value. + This value is specified as an integer number of microseconds. + The value 0 is reserved and cannot be used."; + reference "section 4.1 of RFC 5880"; + } + + leaf required-minimum-receive { + type uint32; + units microseconds; + description + "The minimum interval between received BFD control packets that + this system should support. This value is advertised to the + remote peer to indicate the maximum frequency (i.e., minimum + inter-packet interval) between BFD control packets that is + acceptable to the local system."; + reference "section 4.1 of RFC 5880"; + } + + leaf detection-multiplier { + type uint8 { + range "1..max"; + } + description + "The number of packets that must be missed to declare this + session as down. The detection interval for the BFD session + is calculated by multiplying the value of the negotiated + transmission interval by this value."; + reference "section 4.1 of RFC 5880"; + } + + } + grouping enable-bfd-state { description "Operational state parameters relating to enabling BFD."; @@ -741,6 +755,8 @@ module openconfig-bfd { "Configuration parameters relating to enabling BFD."; uses enable-bfd-config; + uses bfd-configuration; + } container state { @@ -749,6 +765,7 @@ module openconfig-bfd { "Operational state parameters relating to enabing BFD."; uses enable-bfd-config; + uses bfd-configuration; //uses enable-bfd-state; } } From b8391e3da1d8edf377ba797d24d6f973cca6935f Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 7 May 2024 10:58:52 -0700 Subject: [PATCH 335/372] Add worklow to close stale issue/pr (#1104) * add worklow to close stale issue/pr --- .github/workflows/stale.yaml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 .github/workflows/stale.yaml diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 000000000..3fdc49dda --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,14 @@ +name: 'Close stale issues and PRs' +on: + schedule: + - cron: '42 2 * * *' + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + stale-issue-message: 'This issue is stale because it has been open 180 days with no activity. If you wish to keep this issue active, please remove the stale label or add a comment, otherwise will be closed in 14 days.' + days-before-stale: 180 + days-before-close: 14 From 4d4aa4b7dd94acfae84e3f567b534116e6bd5ca4 Mon Sep 17 00:00:00 2001 From: SydneyCaulfeild <47483016+SydneyCaulfeild@users.noreply.github.com> Date: Tue, 7 May 2024 11:26:58 -0700 Subject: [PATCH 336/372] Add FAN_TRAY component type. (#1094) * Add FAN_TRAY component type. --- .../platform/openconfig-platform-types.yang | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/release/models/platform/openconfig-platform-types.yang b/release/models/platform/openconfig-platform-types.yang index 05bc4c306..88b0ef521 100644 --- a/release/models/platform/openconfig-platform-types.yang +++ b/release/models/platform/openconfig-platform-types.yang @@ -22,7 +22,14 @@ module openconfig-platform-types { "This module defines data types (e.g., YANG identities) to support the OpenConfig component inventory model."; - oc-ext:openconfig-version "1.7.0"; + oc-ext:openconfig-version "1.8.0"; + + + revision "2024-04-30" { + description + "Add FAN_TRAY"; + reference "1.8.0"; + } revision "2024-01-30" { description @@ -326,6 +333,12 @@ module openconfig-platform-types { "Cooling fan, or could be some other heat-reduction component"; } + identity FAN_TRAY { + base OPENCONFIG_HARDWARE_COMPONENT; + description + "Contains multiple fans that work in unison to cool the router components."; + } + identity SENSOR { base OPENCONFIG_HARDWARE_COMPONENT; description From 541fbd64f9a399caed2878aed344c20a93dcbad7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabr=C3=ADcio=20Abr=C3=A3o=20Costa?= Date: Wed, 15 May 2024 14:18:07 -0300 Subject: [PATCH 337/372] Fix yang namespace URI to openconfig.net (#1111) (#1112) --- .../openconfig-terminal-device-properties.yang | 10 ++++++++-- .../openconfig-terminal-device-property-types.yang | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/release/models/devices-manifest/openconfig-terminal-device-properties.yang b/release/models/devices-manifest/openconfig-terminal-device-properties.yang index 4e3202c85..85bf510a8 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-properties.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-properties.yang @@ -10,7 +10,7 @@ module openconfig-terminal-device-properties { yang-version "1"; // namespace - namespace "http://example.net/yang/openconfig-terminal-device-properties"; + namespace "http://openconfig.net/yang/openconfig-terminal-device-properties"; prefix "oc-opt-term-properties"; import openconfig-extensions { prefix oc-ext; } @@ -35,10 +35,16 @@ module openconfig-terminal-device-properties { the OTSi (OTSiMC). It also includes (optional) aspects such as filter characterization, CD and DGD tolerance."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.1.2"; // Revisions + revision "2024-05-15" { + description + "Fix yang namespace URI to openconfig.net."; + reference "0.1.2"; + } + revision "2023-12-13" { description "Add reference to the terminal-device-properties-guide.md doc for operational-modes."; diff --git a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang index 13a019294..f389b602c 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang @@ -10,7 +10,7 @@ module openconfig-terminal-device-property-types { yang-version "1"; // namespace - namespace "http://example.net/yang/openconfig-terminal-device-property-types"; + namespace "http://openconfig.net/yang/openconfig-terminal-device-property-types"; prefix "oc-opt-term-prop-types"; import openconfig-extensions { prefix oc-ext; } @@ -29,10 +29,16 @@ module openconfig-terminal-device-property-types { definitions of the set of modulation format, FEC codes and adjustment granularity types use in the reffered model."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.1.1"; // Revisions + revision "2024-05-15" { + description + "Fix yang namespace URI to openconfig.net."; + reference "0.1.1"; + } + revision "2022-03-08" { description "Initial version to provide the initial set of identities used in the openconfig-terminal-device-properties model."; From e3ac23b19f2317a2a88a21e1bb6c838eef9f9da9 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 28 May 2024 18:37:14 -0700 Subject: [PATCH 338/372] Clarify /network-instances/network-instance/tables (#1116) * Clarify /network-instances/network-instance/tables are only created by the system, not users. --- .../openconfig-network-instance-l2.yang | 9 ++++++++- .../openconfig-network-instance.yang | 17 ++++++++++++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 76afb139f..fb8b515d3 100644 --- a/release/models/network-instance/openconfig-network-instance-l2.yang +++ b/release/models/network-instance/openconfig-network-instance-l2.yang @@ -24,7 +24,14 @@ submodule openconfig-network-instance-l2 { Layer 2 network instance configuration and operational state parameters."; - oc-ext:openconfig-version "4.4.0"; + oc-ext:openconfig-version "4.4.1"; + + revision "2024-02-27" { + description + "Clarify that tables are created only by the system and not + users."; + reference "4.4.1"; + } revision "2024-02-27" { description diff --git a/release/models/network-instance/openconfig-network-instance.yang b/release/models/network-instance/openconfig-network-instance.yang index f6d32cbc2..574caa1ab 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,14 @@ module openconfig-network-instance { virtual switch instance (VSI). Mixed Layer 2 and Layer 3 instances are also supported."; - oc-ext:openconfig-version "4.4.0"; + oc-ext:openconfig-version "4.4.1"; + + revision "2024-02-27" { + description + "Clarify that tables are created only by the system and not + users."; + reference "4.4.1"; + } revision "2024-02-27" { description @@ -608,7 +615,8 @@ module openconfig-network-instance { container tables { description "The routing tables that are managed by this network - instance"; + instance. Tables are created and removed by the system. + Users do not create tables."; list table { key "protocol address-family"; @@ -633,7 +641,10 @@ module openconfig-network-instance { address families enabled, the protocol=BGP, address-family=IPv4 table is created by the system. The removal of the table should not require additional or - explicit configurations"; + explicit configurations. + + Users cannot create or delete tables. Instead a user may + configure table-connections which reference these tables."; leaf protocol { type leafref { From 9eeeb2019ac61d501feae5127eb31bc4db15a048 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Wed, 29 May 2024 11:49:37 -0700 Subject: [PATCH 339/372] Add component install-position, install-component and deprecate location (#1095) * (M) release/models/platform/openconfig-platform.yang * (M) release/models/platform/openconfig-platform-linecard.yang * (M) release/models/platform/openconfig-platform-common.yang Add install-component, install-position and deprecate slot-id --- .../platform/openconfig-platform-common.yang | 9 ++- .../openconfig-platform-linecard.yang | 16 ++++- .../models/platform/openconfig-platform.yang | 62 ++++++++++++++++++- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index fd121c09d..299ed3a8c 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,14 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.25.0"; + oc-ext:openconfig-version "0.26.0"; + + revision "2024-04-12" { + description + "Add install-position, install-component and deprecate location and + slot-id."; + reference "0.26.0"; + } revision "2024-01-30" { description diff --git a/release/models/platform/openconfig-platform-linecard.yang b/release/models/platform/openconfig-platform-linecard.yang index 46c5d2ccd..d0429b640 100644 --- a/release/models/platform/openconfig-platform-linecard.yang +++ b/release/models/platform/openconfig-platform-linecard.yang @@ -22,7 +22,14 @@ module openconfig-platform-linecard { "This module defines data related to LINECARD components in the openconfig-platform model"; - oc-ext:openconfig-version "1.1.0"; +oc-ext:openconfig-version "1.2.0"; + + revision "2024-04-12" { + description + "Add install-position, install-component and deprecate location and + slot-id."; + reference "1.2.0"; + } revision "2023-02-13" { description @@ -89,10 +96,15 @@ module openconfig-platform-linecard { "Operational state data for linecard components"; leaf slot-id { + status deprecated; type string; description "Identifier for the slot or chassis position in which the - linecard is installed"; + linecard is installed. + + This leaf is deprecated and will be replaced by install-position + and install-component leaves in a future major revision of this + model."; } } diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 61b1426fd..334522039 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,14 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.25.0"; +oc-ext:openconfig-version "0.26.0"; + + revision "2024-04-12" { + description + "Add install-position, install-component and deprecate location and + slot-id."; + reference "0.26.0"; + } revision "2024-01-30" { description @@ -411,12 +418,63 @@ module openconfig-platform { leaf location { type string; + status deprecated; description "System-supplied description of the location of the component within the system. This could be a bay position, slot number, socket location, etc. For component types that have an explicit slot-id attribute, such as linecards, the - system should populate the more specific slot-id."; + system should populate the more specific slot-id. + + This leaf is deprecated and replaced by install-position and + install-component."; + } + + leaf install-position { + type leafref { + path "../name"; + } + description + "System-supplied index to a position where this component is + installed. The position may be referred in device documenation + as a port, slot, bay, socket, etc. This string must only + indicate the name of the position, and not any indication of + the name of the parent component within the system. Instead, + parent component name should be present in the 'parent' leaf. + + Typically the install-position is a number, but it is observed + that some devices may use letters or alphanumerics. The + position name should be the same name used to physically + identify the position in documentation or printed on the + device. + + Any component which is removable is expected to have + an install-position and an install-component which points to + an ancestor component where the connection occurs. + + For component types that have an explicit slot-id attribute, + such as LINECARD, the system should populate slot-id, + install-position and install-component. This will facilitate a + transition to deprecate slot-id."; + } + + leaf install-component { + type leafref { + path "../name"; + } + description + "This leaf contains the name of the ancestor component which + contains the 'install-position'. This creates a distinct + mapping between a removable component and the target component + it is installed into. Note there may be zero or more + intermediate components between the removable component and + the install-component. + + For example, consider the component tree + PORT ['eth1/2']-> INTEGRATED_CIRCUIT ['npu1']-> LINECARD ['lc1']. + The PORT has an install-position of '2' and install-component named + 'lc1'. The intermediate INTEGRATED-CIRCUIT component is not + present in either install-position or install-component leaves."; } leaf description { From c50178f2d1df28ed88df43eb9d32209d946786a0 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 30 May 2024 15:19:56 -0700 Subject: [PATCH 340/372] fix install-position (#1117) Correct install-position to be a string, not a leaf-ref. --- .../models/platform/openconfig-platform-common.yang | 8 +++++++- release/models/platform/openconfig-platform.yang | 12 ++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 299ed3a8c..04f58b3ac 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.26.0"; + oc-ext:openconfig-version "0.27.0"; + + revision "2024-05-29" { + description + "Change install-position from leaf-ref to string."; + reference "0.27.0"; + } revision "2024-04-12" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 334522039..89ebb559b 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; -oc-ext:openconfig-version "0.26.0"; + oc-ext:openconfig-version "0.27.0"; + + revision "2024-05-29" { + description + "Change install-position from leaf-ref to string."; + reference "0.27.0"; + } revision "2024-04-12" { description @@ -431,9 +437,7 @@ oc-ext:openconfig-version "0.26.0"; } leaf install-position { - type leafref { - path "../name"; - } + type string; description "System-supplied index to a position where this component is installed. The position may be referred in device documenation From 3c810f3b1168e74de473d0d0592151cfbffd27b5 Mon Sep 17 00:00:00 2001 From: sallylsy <108024270+sallylsy@users.noreply.github.com> Date: Thu, 30 May 2024 16:09:52 -0700 Subject: [PATCH 341/372] Support gNPSI in OpenConfig (#1085) * (M) release/models/gnpsi/openconfig-gnpsi-types.yang * (M) release/models/grpc/openconfig-grpc-types.yang * (M) release/models/system/openconfig-system-grpc.yang * Add gRPC connections and statistics in OpenConfig * Add gNPSI as a gRPC service type --------- Co-authored-by: Darren Loher --- release/models/gnpsi/.spec.yml | 6 + .../models/gnpsi/openconfig-gnpsi-types.yang | 38 +++++++ release/models/grpc/.spec.yml | 6 + .../models/grpc/openconfig-grpc-types.yang | 36 ++++++ .../models/system/openconfig-system-grpc.yang | 103 +++++++++++++++++- 5 files changed, 188 insertions(+), 1 deletion(-) create mode 100644 release/models/gnpsi/.spec.yml create mode 100644 release/models/gnpsi/openconfig-gnpsi-types.yang create mode 100644 release/models/grpc/.spec.yml create mode 100644 release/models/grpc/openconfig-grpc-types.yang diff --git a/release/models/gnpsi/.spec.yml b/release/models/gnpsi/.spec.yml new file mode 100644 index 000000000..a38191a7f --- /dev/null +++ b/release/models/gnpsi/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-gnpsi + docs: + - yang/gnpsi/openconfig-gnpsi-types.yang + build: + - yang/gnpsi/openconfig-gnpsi-types.yang + run-ci: false diff --git a/release/models/gnpsi/openconfig-gnpsi-types.yang b/release/models/gnpsi/openconfig-gnpsi-types.yang new file mode 100644 index 000000000..ef241b635 --- /dev/null +++ b/release/models/gnpsi/openconfig-gnpsi-types.yang @@ -0,0 +1,38 @@ +module openconfig-gnpsi-types { + yang-version "1"; + namespace "http://openconfig.net/yang/gnpsi/types"; + prefix "oc-gnpsit"; + + import openconfig-extensions { + prefix oc-ext; + } + + import openconfig-grpc-types { + prefix oc-grpct; + } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds gRPC server type relating to gNPSI running on + a network device."; + + oc-ext:openconfig-version "0.1.0"; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + revision 2024-05-29 { + description + "Initial revision."; + reference "0.1.0"; + } + + identity GNPSI { + base oc-grpct:GRPC_SERVICE; + description + "gNMI: gRPC Network Management Interface"; + } +} diff --git a/release/models/grpc/.spec.yml b/release/models/grpc/.spec.yml new file mode 100644 index 000000000..5e9761d03 --- /dev/null +++ b/release/models/grpc/.spec.yml @@ -0,0 +1,6 @@ +- name: openconfig-grpc + docs: + - yang/grpc/openconfig-grpc-types.yang + build: + - yang/grpc/openconfig-grpc-types.yang + run-ci: false diff --git a/release/models/grpc/openconfig-grpc-types.yang b/release/models/grpc/openconfig-grpc-types.yang new file mode 100644 index 000000000..d9944070b --- /dev/null +++ b/release/models/grpc/openconfig-grpc-types.yang @@ -0,0 +1,36 @@ +module openconfig-grpc-types { + yang-version "1"; + namespace "http://openconfig.net/yang/grpc/types"; + prefix "oc-grpct"; + + import openconfig-extensions { + prefix oc-ext; + } + + organization + "OpenConfig working group"; + contact + "www.openconfig.net"; + + description + "This module adds gRPC server type relating to gRPC services running on + a network device. + The GRPC_SERVICE identity is used to create an extensible list of services + that can be instantiated, with a base set defined in this module. New + services can extend the identity to be included in the list."; + + oc-ext:openconfig-version "0.1.0"; + oc-ext:catalog-organization "openconfig"; + oc-ext:origin "openconfig"; + + revision "2024-05-29" { + description + "Initial revision."; + reference "0.1.0"; + } + + identity GRPC_SERVICE { + description + "Base identity for a gRPC-based service."; + } +} diff --git a/release/models/system/openconfig-system-grpc.yang b/release/models/system/openconfig-system-grpc.yang index fb16870a2..6560806c1 100644 --- a/release/models/system/openconfig-system-grpc.yang +++ b/release/models/system/openconfig-system-grpc.yang @@ -8,6 +8,7 @@ module openconfig-system-grpc { import openconfig-system { prefix oc-sys; } import openconfig-inet-types { prefix oc-inet; } import openconfig-network-instance { prefix oc-ni; } + import openconfig-yang-types { prefix oc-yang; } organization "OpenConfig working group"; @@ -22,10 +23,16 @@ module openconfig-system-grpc { to be included in the list."; - oc-ext:openconfig-version "1.0.0"; + oc-ext:openconfig-version "1.1.0"; oc-ext:catalog-organization "openconfig"; oc-ext:origin "openconfig"; + revision "2024-05-29" { + description + "Add support for gRPC connections."; + reference "1.1.0"; + } + revision "2022-04-19" { description "Description and default value updates for grpc-server @@ -97,6 +104,7 @@ module openconfig-system-grpc { "Operational state relating to the gRPC service."; uses grpc-server-config; } + uses connections-top; } } } @@ -200,6 +208,99 @@ module openconfig-system-grpc { } } + grouping grpc-counters { + description + "Top-level container for gRPC counters."; + container counters { + description + "Operational data for gRPC counters."; + uses grpc-counters-top; + } + } + + grouping grpc-counters-top { + description + "Top-level container of operational data for gRPC counters."; + + leaf bytes-sent { + type oc-yang:counter64; + description + "The total number of bytes sent to the client."; + } + + leaf packets-sent { + type oc-yang:counter64; + description + "The total number of packets sent to the client."; + } + + leaf data-send-error { + type oc-yang:counter64; + description + "A count of errors the gRPC server encountered when + sending data to a grpc client."; + } + } + + grouping grpc-server-connections-state { + description + "Operational data for gRPC server connections."; + + leaf address { + type oc-inet:ip-address; + description + "IPv4/IPv6 address of the gRPC server connection."; + } + + leaf port { + type oc-inet:port-number; + description + "TCP/UDP port number for the gRPC server connection."; + } + } + + grouping connections-top { + description + "Top-level grouping for data related to gRPC connections."; + + container connections { + config false; + description + "Enclosing container for list of gRPC connections."; + + list connection { + key "address port"; + description + "List of gRPC connections"; + + leaf address { + type leafref { + path "../state/address"; + } + description + "Reference to address list key."; + } + + leaf port { + type leafref { + path "../state/port"; + } + description + "Reference to port list key."; + } + + container state { + config false; + description + "Operational state data for gRPC connections."; + + uses grpc-server-connections-state; + uses grpc-counters; + } + } + } + } + augment "/oc-sys:system" { description "Add gRPC service configuration to the openconfig-system model."; From c00868ed96e8e48993e26d8fba20f093722c0e39 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Tue, 4 Jun 2024 09:18:59 -0700 Subject: [PATCH 342/372] Correct description of QSFP56_DD to be generic. (#1110) * Update QSFP56_DD description to be generic to future data rates as intended. --- .../openconfig-transport-types.yang | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index dc5699842..a6dcfab7a 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.24.0"; + oc-ext:openconfig-version "0.24.1"; + + revision "2024-05-13" { + description + "Fix the QSFP56_DD description as it is meant to be generic."; + reference "0.24.1"; + } revision "2024-03-20" { description @@ -915,9 +921,8 @@ module openconfig-transport-types { identity QSFP56_DD { base TRANSCEIVER_FORM_FACTOR_TYPE; description - "QSFP-DD electrical interfaces will employ 8 lanes that operate up to - 25 Gbps NRZ modulation or 50 Gbps PAM4 modulation, providing - solutions up to 200 Gbps or 400 Gbps aggregate"; + "QSFP-DD quad small form factor pluggable double density + optic providing an 8 lane electrical interface"; reference "http://qsfp-dd.com"; } From 0c7f5d0049a916c363bfac5d9effcdd5250dc8d2 Mon Sep 17 00:00:00 2001 From: Brandon Stoll Date: Wed, 3 Jul 2024 17:26:06 -0700 Subject: [PATCH 343/372] Add 25G SR/LR PMDs to openconfig-transport-types. (#1144) * Add 25G SR/LR PMDs to openconfig-transport-types. --- .../openconfig-transport-types.yang | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index a6dcfab7a..b38fb1c2c 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,13 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.24.1"; + oc-ext:openconfig-version "0.25.0"; + + revision "2024-06-28" { + description + "Add ETH_25GBASE_LR and ETH_25GBASE_SR PMD types."; + reference "0.25.0"; + } revision "2024-05-13" { description @@ -1109,6 +1115,18 @@ module openconfig-transport-types { description "Ethernet compliance code: 10GBASE_SR"; } + identity ETH_25GBASE_LR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 25GBASE_LR"; + reference "IEEE 802.3cc-2022 (CL114)"; + } + + identity ETH_25GBASE_SR { + base ETHERNET_PMD_TYPE; + description "Ethernet compliance code: 25GBASE_SR"; + reference "IEEE 802.3by-2022 (CL112)"; + } + identity ETH_40GBASE_CR4 { base ETHERNET_PMD_TYPE; description "Ethernet compliance code: 40GBASE_CR4. From 1d1edd12ad5e8dc191b1d01fe53d55f72bf893d8 Mon Sep 17 00:00:00 2001 From: Arturo Mayoral Date: Thu, 11 Jul 2024 18:29:16 +0200 Subject: [PATCH 344/372] Terminal-device-properties-v2 initial commit (#911) * Terminal-device-properties-v2 This initial commit push the proposal consolidated from TIP OOPT community where it addresses the issues reported in Issue #910. --- doc/terminal-device-properties-guide.md | 92 ++- ...openconfig-terminal-device-properties.yang | 721 ++++++++++++++---- ...config-terminal-device-property-types.yang | 25 +- 3 files changed, 674 insertions(+), 164 deletions(-) diff --git a/doc/terminal-device-properties-guide.md b/doc/terminal-device-properties-guide.md index 88f3f0706..682f839d2 100644 --- a/doc/terminal-device-properties-guide.md +++ b/doc/terminal-device-properties-guide.md @@ -36,4 +36,94 @@ Manifest files are a special OpenConfig model category since they do not represe In order to keep separated them from the rest of operational models, the following openconfig extension is included in the model, to enrich the module metadata: ``` oc-ext:origin "openconfig-properties"; -``` \ No newline at end of file +``` +# Extensions introduced in the v0.2.0 release of the model. + +### Motivation + +After the initial release of the [openconfig-terminal-device-properties.yang](https://github.com/openconfig/public/blob/master/release/models/devices-manifest/openconfig-terminal-device-properties.yang), there have been significant technical questions and discussions happening within the Telecom Infra Project (TIP) Open Optical & Packet Transport (OOPT) community between operators and vendors. + +This issue summarizes the motivation and issues detected in the first release of the model and it will serve as an introduction and motivation of a new pull request (#911) with a new proposed comprehensive update of the model which will be accompanied by the relevant explanations on how the new model proposal will try to overcome the detected issues. It is worth mentioning that the current analysis and the new proposal are the outcomes of an extensive technical discussion within the OOPT community between vendors and service providers and that it consolidates an already discussed proposal starting from the issues and motivations explained here. + +### Context + +The current proposed terminal-device-properties model was designed with the objective of allowing the terminal devices' system vendors to expose the intrinsic properties (Modulation Format, FEC, Baud-rate) and performance characteristics (Rx-OSNR, CD/PMD limits) of the device's supported transmission modes. + +The initial version of the model was designed as a flat list of mode properties, where each entry represents a mode supported by the terminal device and includes the list of characteristics of that mode. However, this initial version presents a significant list of limitations. + +### Initial release limitations +- **First issue**: The current model exposes a list of modes available in the device, however, the characteristics of a mode of transmission are affected by the HW transceiver supplying it. In other words, two different transceivers (supported by the same terminal device) might support the same mode, but their mode characteristics are different. + +image + +- **Second issue**: There is not an interoperability matrix within the Terminal Device's which exposes the compatibility between Terminal Device's chassis, linecards, transceivers and modes. Right now there is no compatibility information available in the model, to allow the supplier to properly describe which modes are supported by each transceiver module available in the terminal device. + +#### Operational challenges + +- It is not clear how mode IDs will be assigned and who will assign them. +- Clarification of the bookended solution target by the model. + +### New proposal scope and initial assumptions + +Clarify the target of the next extension targets + +1. Bookended solutions, and interoperability between terminal devices of the same system vendor. +2. Interoperability between different system vendors O-OTs through standard modes + +### Solution proposed + +This pull request covers a proposed solution to the issues described in #910. + +The changes to the existing model **are not backward compatible.** + +The summary of the changes proposed is the following: + +**1. Operational-mode list:** + - The list of the exposed operational modes properties by the Terminal Device is augmented with the set of **CHARacteristic properties** of the operational mode. + - The mode-ids are the same used within the operational datastore of the terminal device (exposed by the [openconfig-terminal-device.yang](https://github.com/openconfig/public/blob/master/release/models/optical-transport/openconfig-terminal-device.yang) model) and have network-wide scope assuming they guarantee interoperability in bookended scenarios (two Terminal Devices of the same system vendor supporting the same mode). + - The mode-ids are defined by the system vendor. + +**2. Mode-descriptors list:** + - The **design properties** of the modes, which are dependent on the transceiver component that implements the mode, are exposed as a nested list within the operational mode list. It is assumed that a single operational mode might be implemented by different transceivers which might have associated different design properties exposed by different mode descriptors. + - The **mode-descriptor-id** is a local index that does not have interoperability meaning outside the specific Terminal device which reports it. In other words, the same mode descriptors might be exported by different Terminal Devices with different IDs. + +**3. Interoperable mode list.** + - A given proprietary operational mode might be capable to comply with a certain number of standards or elsewhere publicly defined operational modes defined by other organizations e.g., ITU-T or OpenROADM. + - This compatibility characteristic shall be assured by the system vendor and imply that the design properties of the implementations of that specific operational mode are a superset of all listed supported standard modes. + - This model block will replace the previous "G.698.2" node tree with a more generic definition able to accommodate multiple standards or MSA-defined modes. + +**4. Transceiver-descriptors list.** + - The Terminal Device exposes the list of the transceiver components which are supported by the device. + - Each transceiver exposes the list of compatible modes and their associated mode descriptor. + - This new model block enhances the previous version by allowing to expose explicitly the compatibility matrix between the Terminal Device, the set of transceiver modules supported and the associated modes supported. + +**5. Linecard-descriptors list.** + - The Terminal Device exposes the list of linecard components which are supported by the device. + - Each linecard component exposes the list of transceivers that are supported. + - Each linecard constrains the list of modes that can be supported among the ones supported by the transceiver. + - Each linecard constrains the optical-channel configuration, e.g., target-output-power and frequency range. + - This new model block enhances the previous version by allowing to expose explicitly the compatibility matrix between the Terminal Device, the line cards, the set of transceiver module per line card and the associated modes supported. + +Following the model tree with the 5 blocks described above. In green the new leaves/containers are added in this proposal; in black the non-modified leaves, even if they have been reallocated within the tree under different containers/lists. + +image + +For more clarity on the above please check the following common definitions and assumptions defined during the design process of this proposal within the Telecom Infra Project (TIP) OOPT MUST project. + +#### Common definitions +- System-vendor = the O-OT host platform provider (e.g. muxponder shelf, router, switch) and system integrator including the network operating system of the O-OT +- Manufacturer = Transceiver manufacturer (pluggable) +- Bookended scenario definition. + - The System Vendor is the same in the two O-OTs. + - The O-OTs of the same system vendor might host different Transceiver manufacturers. + - Mode-ids are defined and maintained by the system vendor. + - Interoperability shall be guaranteed by the system vendor if the same mode-id is configured in the line interfaces /optical-channels of the two O-OTs. + +#### Assumptions +- The **openconfig-terminal-device-properties.yang** is a standalone model which represents static properties of a given terminal device, including: + - **Operational-modes’ characteristic properties** on the transceiver configuration which characterize the mode (modulation-format, baud-rate, bit-rate, fec-format, filter…) + - **Mode-descriptors** which describe the transmission design properties (Tx/Rx properties + CHARacteristic properties) of the implementation of the mode conditioned by the HW platform (transceiver + linecard) (Rx/Tx-OSNR, CD/PMD tolerances, penalties…) + - **optical-channel’s configuration constraints** introduced by the HW implementation (min/max-central-frequency, min/max-output-power…) +- The openconfig-terminal-device-properties.yang is a standalone model representing a given mode’s static properties. We shall avoid any reference btw the manifest files and the operational openconfig trees which change dynamically. In other words, the references between mode-descriptors and operational modes, shall be through absolute identifiers. + + diff --git a/release/models/devices-manifest/openconfig-terminal-device-properties.yang b/release/models/devices-manifest/openconfig-terminal-device-properties.yang index 85bf510a8..862676c40 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-properties.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-properties.yang @@ -35,10 +35,18 @@ module openconfig-terminal-device-properties { the OTSi (OTSiMC). It also includes (optional) aspects such as filter characterization, CD and DGD tolerance."; - oc-ext:openconfig-version "0.1.2"; + oc-ext:openconfig-version "0.2.0"; // Revisions + revision "2024-05-28" { + description "Comprehensive model update to undertake the limitations + of the first version of the model, such the introduction of modes + dependencies on hardware components and the interoperability information + between terminal devices, linecards, transceviers and modes."; + reference "0.2.0"; + } + revision "2024-05-15" { description "Fix yang namespace URI to openconfig.net."; @@ -131,15 +139,6 @@ module openconfig-terminal-device-properties { It may vary depending on the modulation format used in the associated transmission mode (operational-mode)."; } - leaf pre-fec-ber-threshold { - type decimal64 { - fraction-digits 18; - } - units bit-errors-per-second; - description - "Threshold on the PRE-FEC-BER, for which FEC code is able to - correct errors."; - } } grouping filter-attributes-top { @@ -237,46 +236,22 @@ module openconfig-terminal-device-properties { } } - grouping operational-mode-descriptor-explicit-capabilities-state { + grouping mode-descriptor-design-properties-state { description - "Operational-mode capabilities leafs."; - - leaf modulation-format { - type union { - type string; - type oc-opt-term-prop-types:modulation-format; - } - description - "Optical modulation format associated to the mode. The - modulation format associated to the optical signal."; - } - - leaf bit-rate { - type oc-opt-term-prop-types:bit-rate; - description - "Rounded bit rate of the tributary signal delivered by the - optical channel associated to the specific operational mode. - Exact bit rate will be refined by protocol selection at the - associated tributary logical channel."; - } - - leaf baud-rate { - type decimal64 { - fraction-digits 2; - } - units Bd; - description - "Baud-rate or symbol rate."; - } - - leaf optical-channel-spectrum-width { - type decimal64 { - fraction-digits 2; - } - units GHz; + "For each given mode supported by the device there might be + one or multiple implementations related to the transceiver hardware + modules which implements the mode. For a given implementation, + a set of design properties are represented within the mode-descriptor + data structure, which is identified by a unique local identifier. + A mode-descriptor shall uniquely characterize a given operational mode + implemented by a given transceiver component described within the + terminal-device manfiest file."; + + leaf mode-descriptor-id { + type uint16; description - "Spectrum width of the optical channel associated to this - operational mode, calculated as the baud-rate*(1+roll-off)."; + "Two-octet encoding of the vendor-defined operational + mode"; } leaf min-tx-osnr { @@ -357,9 +332,19 @@ module openconfig-terminal-device-properties { optical channel associated to the associated transmission mode (operational model), expressed in decibels (dB)"; } + + leaf pre-fec-ber-threshold { + type decimal64 { + fraction-digits 18; + } + units bit-errors-per-second; + description + "Threshold on the PRE-FEC-BER, for which FEC code is able to + correct errors."; + } } - grouping operational-mode-descriptor-explicit-top { + grouping operational-mode-descriptor-design-properties-top { description "Definition of proprietary or non-standard operational-modes, which can be uniformly characterized by the set of attributes included in their @@ -369,150 +354,172 @@ module openconfig-terminal-device-properties { allowed values to be configured at the oc-component:optical-channel instance configured to this mode."; - container explicit-mode { + container mode-descriptors { description "Explicit definition of the operational-mode. Typically this is used for non-standard/proprietary modes defined by the terminal-device vendor and it is self-described by the capabilities included in the subtree underneath."; - container operational-mode-capabilities{ + list mode-descriptor{ + key "mode-descriptor-id"; description - "Set of attributes which characterizes the operational-mode for optimal - optical-channel transmission and receiver functions. This attributes - are intending to describe all the relevant data used during the - network planning phase, to estimate the physical-impairment - tolerances which can be introduced by the DWDM optical path, - while assuring optimal transmission function."; + ""; + leaf mode-descriptor-id { + type leafref { + path "../state/mode-descriptor-id"; + } + description + "Reference to mode-descriptor-id"; + } container state { config false; description - "Operational-mode explicit mode capabilities state container."; - - uses operational-mode-descriptor-explicit-capabilities-state; + "Mode-descriptor state attributes top container."; + uses mode-descriptor-design-properties-state; } - container fec { - description - "The Forward Error Coding (FEC) coding schema used, - including the name, overhead, pre-fec-ber threshold and - gain properties."; + uses operational-mode-descriptor-penalties-top; + uses operational-mode-descriptor-interoperable-modes-top; + } + } + } - container state { - config false; - description - "FEC state attributes top container."; + grouping interoperable-mode-properties-state { + description + "System-defined configuration data for component properties"; - uses fec-codes-attributes; - } + leaf name { + type string; + description + "System-supplied name of the property -- this is typically + non-configurable"; + } + + leaf value { + type union { + type string; + type boolean; + type int64; + type uint64; + type decimal64 { + fraction-digits 2; } + } + description + "Property values can take on a variety of types. Signed and + unsigned integer types may be provided in smaller sizes, + e.g., int8, uint16, etc."; + } + } - container penalties { - description - "Enconsing list's container."; + grouping operational-mode-descriptor-interoperable-mode-state { + description + "Interoperable mode features attributes grouping."; - list penalty { - key "parameter-and-unit up-to-boundary"; - description - "Penalties includes contributions from different impairments including - cd, pmd, low RX Power, pdl,... - - For parameter values below lowest up-to-boundary value, the penalty is 0. - - For parameter values between lowest and highest up-to-boundary - values, penalty could be linearly interpolated. - - For parameter values above highest up-to-boundary value, the penalty is the one - included within penalty-value attribute associated to the highest up-to-boundary"; - - leaf parameter-and-unit { - type leafref { - path "../state/parameter-and-unit"; - } - description - "Impairment and unit leading to the penalty (i.e., cd-ps)"; - } - - leaf up-to-boundary { - type leafref { - path "../state/up-to-boundary"; - } - description - "defines the upper (for positive values) and lower (for negative values) - limit for which the penalty value is valid."; - } - - container state { - config false; - description - "Penalties list element's state attributes top container."; - uses penalties-list-element-attributes; - } - } - } + leaf mode-name { + type string; + description + "Public well-know free-format name reference to the mode name."; + } - container filter { - description - "This container includes information which characterises the filter at - transceiver transmission for the given operational-mode."; + leaf publisher-organization { + type union { + type string; + type oc-opt-term-prop-types:interoperability-modes-organization; + } + description + "Name of the organization, standard body, Multi-Source Agreement, or + open source project, responsible of the definition of the interoperable + mode."; + } + } + grouping operational-mode-descriptor-penalties-top { + description + "Top container grouping for operational-mode-descriptor."; + container penalties { + description + "Enconsing list's container."; - container state { - config false; - description - "Filter's state attributes top container."; - uses filter-attributes-top; + list penalty { + key "parameter-and-unit up-to-boundary"; + description + "Penalties includes contributions from different impairments including + cd, pmd, low RX Power, pdl,... + - For parameter values below lowest up-to-boundary value, the penalty is 0. + - For parameter values between lowest and highest up-to-boundary + values, penalty could be linearly interpolated. + - For parameter values above highest up-to-boundary value, the penalty is the one + included within penalty-value attribute associated to the highest up-to-boundary"; + + leaf parameter-and-unit { + type leafref { + path "../state/parameter-and-unit"; } + description + "Impairment and unit leading to the penalty (i.e., cd-ps)"; } - } - container optical-channel-config-value-constraints{ - description - "Set of constraints of the configuration attributes - of the optical-channel associated to the selected - operational-mode."; + leaf up-to-boundary { + type leafref { + path "../state/up-to-boundary"; + } + description + "defines the upper (for positive values) and lower (for negative values) + limit for which the penalty value is valid."; + } container state { config false; description - "Operational-mode explicit mode config value constrains state top - container."; - - uses operational-mode-descriptor-explicit-config-constraints-state; + "Penalties list element's state attributes top container."; + uses penalties-list-element-attributes; } } } } - grouping operational-mode-descriptor-standard-state { + grouping operational-mode-descriptor-interoperable-modes-top { description - "Standard mode features attributes grouping."; + "Each mode-descriptor of a given operational-mode could be compatible + with many interoperable modes which are defined, elsewhere, by standard + bodies, multi-source agreements, vendor forums or any other public forum. + This compatibility characteristic shall be assured by the system-vendor + and imply that the design properties of the implementations of that + specific operational mode are a superset of the all listed supported + standard modes"; - leaf standard-mode { - type oc-opt-term-prop-types:standard-mode; + container interoperable-modes { description - "G.698.2 (11/18) standard mode"; - } - } + "Top level container of interoperable modes."; - grouping operational-mode-descriptor-standard-top { - description - "Standard mode features description grouping. It is used if the - 'mode-type' attribute is set to 'TRANSCEIVER_MODE_TYPE_STANDARD"; + list interoperable-mode { + key "mode-name"; + description + "Each interoperable mode is defined by its public name reference + and a set of free form key-value properties which augments with + the required information provided by the system-vendor."; - container G.698.2 { - description - "ITU-T G.698.2 (11/18) standard mode that guarantees interoperability. - It must be an string with the following format: - B-DScW-ytz(v) where all these attributes are conformant - to the ITU-T G.698.2 (11/18) recommendation."; + leaf mode-name { + type leafref { + path "../state/mode-name"; + } + description + "Reference to mode-name."; + } - container state { + container state { config false; description - "Operational-mode standard mode state top container."; + "Operational-mode interoperbale mode state top container."; - uses operational-mode-descriptor-standard-state; + uses operational-mode-descriptor-interoperable-mode-state; + } } } } + grouping operational-mode-descriptor-state{ description "Top-level operational-mode-features grouping definitions"; @@ -524,13 +531,74 @@ module openconfig-terminal-device-properties { mode"; } - leaf mode-type { - type identityref{ - base oc-opt-term-prop-types:TRANSCEIVER_MODE_TYPE; + leaf modulation-format { + type union { + type string; + type oc-opt-term-prop-types:modulation-format; + } + description + "Optical modulation format associated to the mode. The + modulation format associated to the optical signal."; + } + + leaf bit-rate { + type oc-opt-term-prop-types:bit-rate; + description + "Rounded bit rate of the tributary signal delivered by the + optical channel associated to the specific operational mode. + Exact bit rate will be refined by protocol selection at the + associated tributary logical channel."; + } + + leaf baud-rate { + type decimal64 { + fraction-digits 2; + } + units Bd; + description + "Baud-rate or symbol rate."; + } + + leaf optical-channel-spectrum-width { + type decimal64 { + fraction-digits 2; + } + units GHz; + description + "Spectrum width of the optical channel associated to this + operational mode, calculated as the baud-rate*(1+roll-off)."; + } + } + + grouping operation-mode-filter-and-fec { + description + "Enclosing grouping for Operational Mode filter and FEC attributes."; + + container filter { + description + "This container includes information which characterises the filter at + transceiver transmission for the given operational-mode."; + + container state { + config false; + description + "Filter's state attributes top container."; + uses filter-attributes-top; } + } + container fec { description - "Indicates whether the transceiver's mode is a standard - mode, an organizational mode or an explicit mode."; + "The Forward Error Coding (FEC) coding schema used, + including the name, overhead, pre-fec-ber threshold and + gain properties."; + + container state { + config false; + description + "FEC state attributes top container."; + + uses fec-codes-attributes; + } } } @@ -538,7 +606,7 @@ module openconfig-terminal-device-properties { description "top-level operational-mode definitions"; - container operational-modes { + container operational-mode-descriptors { config false; description "Indicates the transceiver's list of supported operational @@ -546,12 +614,12 @@ module openconfig-terminal-device-properties { reference "https://github.com/openconfig/public/blob/master/doc/terminal-device-properties-guide.md"; - list mode-descriptor { + list operational-modes { key "mode-id"; description - "List of operational modes supported by the platform. - The operational mode provides a platform-defined summary - of information such as symbol rate, modulation, pulse + "List of operational modes supported by the terminal-device. + The operational mode descriptor list provides a platform-defined + summary of the modes' information such as symbol rate, modulation, pulse shaping, etc."; leaf mode-id { @@ -569,11 +637,342 @@ module openconfig-terminal-device-properties { uses operational-mode-descriptor-state; } - uses operational-mode-descriptor-standard-top; - uses operational-mode-descriptor-explicit-top; + uses operation-mode-filter-and-fec; + uses operational-mode-descriptor-design-properties-top; + } + } + } + + // Definition of terminal-device transceiver descriptors. + + grouping terminal-device-component-descriptor-state { + description + "State data for terminal device descriptor components."; + + leaf component-descriptor-id { + type string; + description + "Unique identifier assigned by the system vendor for the + component descriptor."; + } + + leaf system-vendor-name { + type string; + description + "System vendor company name"; + } + + leaf system-vendor-part-no { + type string; + description + "System-vendor assigned part number for the component. This should + be present in particular if the component is also an FRU + (field replaceable unit)"; + } + + leaf mfg-name { + type string; + description + "System-supplied identifier for the manufacturer of the + component. This data is particularly useful when a + component manufacturer is different than the overall + device vendor."; + } + + leaf mfg-part-no { + type string; + description + "Transceiver manufacturer assigned part number for the component."; + } + + leaf hardware-version { + type string; + description + "For hardware components, this is the hardware revision of + the component."; + } + + leaf firmware-version { + type string; + description + "For hardware components, this is the version of associated + firmware that is running on the component, if applicable."; + } + + leaf software-version { + type string; + description + "For software components such as operating system or other + software module, this is the version of the currently + running software."; + } + + leaf clei-code { + type string; + description + "Common Language Equipment Identifier (CLEI) code of the + component. This should be present in particular if the + component is also an FRU (field replaceable unit)"; + } + } + grouping transceiver-compatible-mode-state { + description + "Each compatible mode has associated a mode-descriptor which represents + the operational mode design properties associated to the transceiver which + transmits the mode."; + + container state { + description + "State container of transciever compatible modes."; + + leaf mode-id { + type uint16; + must "../../../../../../operational-mode-descriptors/operational-modes[mode-id=current()]/mode-id"; + + description + "Two-octet encoding of the vendor-defined operational mode. + Each value shall reference a valid mode-id included in the + operational-mode-descriptors list."; + } + + leaf mode-descriptor-id { + type leafref { + path "/oc-opt-term-properties:operational-mode-descriptors/operational-modes/mode-descriptors/mode-descriptor/mode-descriptor-id"; + } + description + "Reference to the associated mode-descriptor-id which describes + the specific design properties of the mode once it is being transmitted + by the parent transceiver component."; + } + } + } + + grouping transceiver-compatible-modes { + description + "Transceiver compatible modes definition."; + + container transceiver-compatible-modes { + config false; + description + "Indicates the set of operatational-modes, present in the terminal- + device manifest, which are compatible with the described transceiver + component."; + + list transceiver-compatible-mode { + key "mode-id"; + description + "List of operational modes supported by the target transceiver."; + + leaf mode-id { + type leafref { + path "../state/mode-id"; + } + description + "Reference to a ../state/mode-id."; + } + uses transceiver-compatible-mode-state; + } + } + } + + grouping transceiver-descriptor-top { + description + "top-level transceiver-descriptor definitions"; + + container transceiver-descriptors { + config false; + description + "Indicates the terminal-device's list of compatible transceiver + component and its associated modes and mode descriptors compatibility + matrix."; + + list transceiver-descriptor { + key "component-descriptor-id"; + description + "List of transceiver components supported by the terminal-device. + The operational mode provides a platform-defined summary + of information such as symbol rate, modulation, pulse + shaping, etc."; + + leaf component-descriptor-id { + type leafref { + path "../state/component-descriptor-id"; + } + description + "Reference to component-descriptor-id"; + } + + container state { + description + "Static features or properties which characterize the + component descriptor."; + + uses terminal-device-component-descriptor-state; + } + uses transceiver-compatible-modes; + } + } + } + + // Definition of terminal-device linecard descriptors. + + grouping linecards-constrained-compatible-modes-state { + description + "Grouping for the linecards' contrained compatible modes + state attributes."; + + container state { + description + "State container for linecard constrained compatible modes"; + + leaf mode-id { + type uint16; + must "../../../../../../../../operational-mode-descriptors/operational-modes[mode-id=current()]/mode-id"; + + description + "Absolute reference to an operational-mode-id. Each value shall + reference a valid mode-id included in the operational-mode-descriptors + list."; + } + + leaf mode-descriptor-id { + type leafref { + path "/oc-opt-term-properties:operational-mode-descriptors/operational-modes/mode-descriptors/mode-descriptor/mode-descriptor-id"; + } + description + "Reference to the associated mode-descriptor-id which describes + the specific design properties of the mode once it is being transmitted + by the parent transceiver component."; + } + } + } + + grouping constrained-compatible-modes { + description + "Linecards' compatible transceiver list of compatible modes which are + constrained by the integration made by the system vendor of the given + terminal-device."; + + container constrained-compatible-modes { + config false; + description + "Indicates the set of operatational-modes, present in the terminal- + device manifest, which are compatible with the described transceiver + component within the linecard component."; + + list constrained-compatible-mode { + key "mode-id"; + description + "List of operational modes supported by the target transceiver."; + + leaf mode-id { + type leafref { + path "../state/mode-id"; + } + description + "Reference to linecard-descriptor/constrained-compatible-mode/state/mode-id."; + } + + uses linecards-constrained-compatible-modes-state; + + container optical-channel-config-value-constraints{ + description + "Set of constraints of the configuration attributes + of the optical-channel associated to the selected + operational-mode."; + + container state { + config false; + description + "Operational-mode explicit mode config value constrains state top + container."; + + uses operational-mode-descriptor-explicit-config-constraints-state; + } + } + } + } + } + + grouping linecard-compatible-transceivers { + description + "Linecard-transceiver compatibility matrix definition."; + + container compatible-transceivers { + config false; + description + "Indicates the set of transceiver component which are compatible + with the described linecard component."; + + list compatible-transceiver { + key "transceiver-descriptor-id"; + description + "List of transceiver descriptor ids."; + + leaf transceiver-descriptor-id { + type leafref { + path "../state/transceiver-descriptor-id"; + } + description + "Reference to transceiver-descriptor-id"; + } + container state { + description + "Static features or properties which characterize the + component descriptor."; + + leaf transceiver-descriptor-id { + type string; + description + "String rerference of the system vendor defined transciever + component descriptor id."; + } + } + uses constrained-compatible-modes; + } + } + } + + grouping linecard-descriptor-top { + description + "top-level linecard-descriptor definitions"; + + container linecard-descriptors { + config false; + description + "Indicates the terminal-device's list of compatible linecard + component and its associated modes and mode descriptors compatibility + matrix."; + + list linecard-descriptor { + key "component-descriptor-id"; + description + "List of linecard components supported by the terminal-device. + The operational mode provides a platform-defined summary + of information such as symbol rate, modulation, pulse + shaping, etc."; + + leaf component-descriptor-id { + type leafref { + path "../state/component-descriptor-id"; + } + description + "Reference to component-descriptor-id"; + } + + container state { + description + "Static features or properties which characterize the + component descriptor."; + + uses terminal-device-component-descriptor-state; + } + uses linecard-compatible-transceivers; } } } + uses transceiver-descriptor-top; + uses linecard-descriptor-top; uses operational-mode-top; } diff --git a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang index f389b602c..b1fd0ef9b 100644 --- a/release/models/devices-manifest/openconfig-terminal-device-property-types.yang +++ b/release/models/devices-manifest/openconfig-terminal-device-property-types.yang @@ -29,10 +29,18 @@ module openconfig-terminal-device-property-types { definitions of the set of modulation format, FEC codes and adjustment granularity types use in the reffered model."; - oc-ext:openconfig-version "0.1.1"; + oc-ext:openconfig-version "0.2.0"; // Revisions + revision "2024-05-28" { + description "Comprehensive model update to undertake the limitations + of the first version of the model, such the introduction of modes + dependencies on hardware components and the interoperability information + between terminal devices, linecards, transceviers and modes."; + reference "0.2.0"; + } + revision "2024-05-15" { description "Fix yang namespace URI to openconfig.net."; @@ -62,6 +70,14 @@ module openconfig-terminal-device-property-types { reference "ITU-T G.698.2 (11/2018)"; } + typedef interoperability-modes-organization { + type identityref { + base INTEROPERABILITY_MODES_ORGANIZATION; + } + description + "Optical modulation format associated to the mode"; + } + typedef bit-rate { type identityref { base oc-opt-types:TRIBUTARY_RATE_CLASS_TYPE; @@ -123,6 +139,11 @@ module openconfig-terminal-device-property-types { "Definition of impairment type and unit used in penaty list"; } + identity INTEROPERABILITY_MODES_ORGANIZATION { + description + "Base identity for interoperability modes' defining organizations."; + } + identity SHAPING_TYPE { description "Base identity for pulse-shaping-type, to help characterize the @@ -260,7 +281,6 @@ module openconfig-terminal-device-property-types { no minimun spacing between channels is defined."; } - identity FEC { description "Forward Error Correction base identity."; @@ -279,6 +299,7 @@ module openconfig-terminal-device-property-types { "Generic FEC, Reed Solomon (255,239) coding schema, defined in ITU-T G.975 (10/2000)."; } + identity FEC_E { base FEC; description From ce4fd10a8078e89d4a2c7408b0462831f45e0165 Mon Sep 17 00:00:00 2001 From: Wen Bo Li <50884368+wenovus@users.noreply.github.com> Date: Tue, 16 Jul 2024 11:02:29 -0700 Subject: [PATCH 345/372] Add `ext-community-count` container and clarify that `community-count` does not include extended communities. (#1084) * Clarify that `community-count` does not include extended communities. --- release/models/bgp/openconfig-bgp-policy.yang | 46 ++++++++++++++++--- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-policy.yang b/release/models/bgp/openconfig-bgp-policy.yang index 03dd2ab8d..f4c0c18c4 100644 --- a/release/models/bgp/openconfig-bgp-policy.yang +++ b/release/models/bgp/openconfig-bgp-policy.yang @@ -28,7 +28,15 @@ module openconfig-bgp-policy { It augments the base routing-policy module with BGP-specific options for conditions and actions."; - oc-ext:openconfig-version "7.0.0"; + oc-ext:openconfig-version "7.1.0"; + + revision "2024-07-02" { + description + "Add ext-community-count container, which also clarifies that + community-count does not include other types of communities (e.g. + extended)."; + reference "7.1.0"; + } revision "2024-01-31" { description @@ -384,28 +392,52 @@ module openconfig-bgp-policy { grouping community-count-config { description - "Configuration data for community count condition"; + "Configuration data for different community count conditions"; uses oc-pol-types:attribute-compare-operators; } grouping community-count-state { description - "Operational state data for community count condition"; + "Operational state data for different community count conditions"; } grouping community-count-top { description - "Top-level grouping for community count condition"; + "Top-level grouping for different community count conditions"; container community-count { description "Value and comparison operations for conditions based on the - number of communities in the route update"; + number of regular communities in the route update."; + + container config { + description + "Configuration data for regular community count condition"; + + uses community-count-config; + } + + container state { + + config false; + + description + "Operational state data for regular community count condition"; + + uses community-count-config; + uses community-count-state; + } + } + + container ext-community-count { + description + "Value and comparison operations for conditions based on the + number of extended communities in the route update."; container config { description - "Configuration data for community count condition"; + "Configuration data for extended community count condition"; uses community-count-config; } @@ -415,7 +447,7 @@ module openconfig-bgp-policy { config false; description - "Operational state data for community count condition"; + "Operational state data for extended community count condition"; uses community-count-config; uses community-count-state; From d23641eeb2c576f3d07b67361d526b3a39ffa8fa Mon Sep 17 00:00:00 2001 From: Carlos Rodriguez Campos Date: Tue, 16 Jul 2024 20:04:40 +0200 Subject: [PATCH 346/372] Add vpws local and remote identifiers to EVPN-VPWS configuration (#930) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update openconfig-evpn.yang with vpws identifiers Extend openconfig-evpn.yang model with those two leafs for setting both local and remote vpws service identifiers within container evpn/evpn-instances/evpn-instance --------- Co-authored-by: Óscar González de Dios --- .../network-instance/openconfig-evpn.yang | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index 3b201e809..b9870e461 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,14 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.8.0"; + oc-ext:openconfig-version "0.9.0"; + + revision "2024-05-14" { + description + "Add configuration of VPWS identifier + for EVPN Virtual Private Wire Services (RFC 8214)"; + reference "0.9.0"; + } revision "2024-04-03" { description @@ -555,6 +562,30 @@ module openconfig-evpn { draft-ietf-bess-rfc7432bis-05 BGP MPLS-Based Ethernet VPN"; } + + leaf local-vpws-service-id { + type uint32 { + range "1..16777215"; + } + description + "Indicates the local VPWS identifier assigned + to the Attachment Circuit (AC)."; + reference + "RFC8214 Virtual Private Wire Service Support + in Ethernet VPN."; + } + + leaf remote-vpws-service-id { + type uint32 { + range "1..16777215"; + } + description + "Indicates the remote VPWS identifier assigned + to the Attachment Circuit (AC)."; + reference + "RFC8214 Virtual Private Wire Service Support + in Ethernet VPN."; + } } grouping evpn-import-export-config { From 5ba5c936a21560fe5edcda3010d6219f298c8112 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Tue, 16 Jul 2024 11:58:19 -0700 Subject: [PATCH 347/372] Remove unused top-level 'messages' container (#1151) * (M) system/openconfig-messages.yang - Remove unused `uses` of the top-level `messages` container --- release/models/system/openconfig-messages.yang | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/release/models/system/openconfig-messages.yang b/release/models/system/openconfig-messages.yang index 894704479..bfed7afd2 100644 --- a/release/models/system/openconfig-messages.yang +++ b/release/models/system/openconfig-messages.yang @@ -32,12 +32,18 @@ module openconfig-messages { /yang/system/openconfig-system.yang model, rather it provies the Operator with an alternative method of consuming messages."; - oc-ext:openconfig-version "0.0.1"; + oc-ext:openconfig-version "0.1.0"; + + revision 2024-07-15 { + description + "Remove unused top-level messages container."; + reference "0.1.0"; + } revision "2018-08-13" { - description - "Initial draft."; - reference "0.0.1"; + description + "Initial draft."; + reference "0.0.1"; } // identity statements @@ -217,5 +223,4 @@ module openconfig-messages { uses debug-messages-top; } } - uses messages-top; } From daf73c37e9062b458bb9eab645840e5d3835c74d Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Wed, 17 Jul 2024 17:15:37 -0600 Subject: [PATCH 348/372] Add transition OPMODES to wifi-phy models (#895) * adding opmodes for WPA3 * Adding transition modes to phy opmodes --- release/models/wifi/openconfig-wifi-phy.yang | 28 +++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/release/models/wifi/openconfig-wifi-phy.yang b/release/models/wifi/openconfig-wifi-phy.yang index 41d727f61..cf328248d 100644 --- a/release/models/wifi/openconfig-wifi-phy.yang +++ b/release/models/wifi/openconfig-wifi-phy.yang @@ -25,7 +25,13 @@ module openconfig-wifi-phy { description "Model for managing PHY layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.2.3"; + oc-ext:openconfig-version "1.2.4"; + + revision "2024-07-10" { + description + "Adding TRANSITION modes to PHY OPMODES"; + reference "1.2.4"; + } revision "2023-11-30" { description @@ -484,20 +490,40 @@ module openconfig-wifi-phy { description "Open authentication with Opportunistic Wireless Encryption."; } + enum ENHANCED_OPEN_TRANSITION { + description + "Open authentication with Opportunistic Wireless Encryption and + support for transition mode."; + } enum WPA3_SAE { description "WPA3-SAE using Simultaneous Authentication of Equals (SAE)."; } + enum WPA3_2_SAE_TRANSITION { + description + "WPA3-SAE using Simultaneous Authentication of Equals (SAE) and + WPA2-PSK AKMs."; + } enum WPA3_ENTERPRISE { description "WPA3-Enterprise with 802.1X SHA-256 authentication key management."; } + enum WPA3_2_ENTERPRISE_TRANSITION { + description + "WPA3-Enterprise with 802.1X SHA-256 authentication key + management."; + } enum WPA3_ENTERPRISE_192_BIT { description "WPA3-Enterprise with 802.1X SHA-384 authentication key management."; } + enum WPA3_ENTERPRISE_GCM_256_BIT { + description + "WPA3-Enterprise with 802.1X GCM256 authentication key + management."; + } } description "Operating mode of the BSS."; From 4e238f6c56909a8870c6a7b0958dab59ba7572bb Mon Sep 17 00:00:00 2001 From: J vanBemmel Date: Fri, 26 Jul 2024 00:52:06 +0000 Subject: [PATCH 349/372] Add regression tests for bugs in route-distinguisher regex (#454) Co-authored-by: Rob Shakir --- regexp-tests/openconfig-network-instance-types-test.yang | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/regexp-tests/openconfig-network-instance-types-test.yang b/regexp-tests/openconfig-network-instance-types-test.yang index 9a4edf22d..9047cd777 100644 --- a/regexp-tests/openconfig-network-instance-types-test.yang +++ b/regexp-tests/openconfig-network-instance-types-test.yang @@ -13,6 +13,7 @@ module openconfig-network-instance-types-test { pt:pattern-test-pass "99:4294967295"; pt:pattern-test-pass "999:999999999"; pt:pattern-test-pass "9999:99999999"; + pt:pattern-test-fail "09999:99999999"; // regression: not canonical pt:pattern-test-pass "65535:0"; pt:pattern-test-pass "59999:65536"; pt:pattern-test-pass "64999:4294967289"; @@ -24,6 +25,7 @@ module openconfig-network-instance-types-test { pt:pattern-test-pass "65535:4289999999"; pt:pattern-test-pass "65535:4199999999"; pt:pattern-test-pass "65535:3999999999"; + pt:pattern-test-pass "65535:2999999999"; // regression: [1-3][0-9]{9}, not just 3[0-9]{9} pt:pattern-test-fail "0:4294967296"; pt:pattern-test-fail "65536:777777"; pt:pattern-test-fail "65540:777777"; @@ -52,6 +54,7 @@ module openconfig-network-instance-types-test { pt:pattern-test-fail "1.1.1.1:65600"; pt:pattern-test-fail "1.1.1.1:66000"; pt:pattern-test-fail "1.1.1.1:70000"; + pt:pattern-test-fail "1.1.1.1:09999"; // regression pt:pattern-test-fail "256.255.255.255:99"; pt:pattern-test-fail "1.1.1.256:99"; pt:pattern-test-fail "256.1.1.1%eth0:99"; @@ -71,7 +74,9 @@ module openconfig-network-instance-types-test { pt:pattern-test-pass "4293999999:65535"; pt:pattern-test-pass "4289999999:65535"; pt:pattern-test-pass "4199999999:65535"; + pt:pattern-test-pass "1999999999:65535"; // regression pt:pattern-test-pass "3999999999:65535"; + pt:pattern-test-fail "3999999999:05535"; // regression pt:pattern-test-fail "4294967296:0"; pt:pattern-test-fail "777777:65536"; pt:pattern-test-fail "777777:65540"; From 72d3b679c5081340da079af4db87643a55a16ebd Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 25 Jul 2024 17:55:38 -0700 Subject: [PATCH 350/372] add hex-string-prefixed typedef (#1014) * add hex-string-colon typedef * deprecate hex-string * Update openconfig-keychain.yang --- regexp-tests/openconfig-yang-types-test.yang | 13 ++++++++++ .../models/keychain/openconfig-keychain.yang | 17 ++++++++++--- .../policy/openconfig-policy-types.yang | 25 +++++++++++++------ .../models/types/openconfig-yang-types.yang | 24 ++++++++++++++++-- 4 files changed, 66 insertions(+), 13 deletions(-) diff --git a/regexp-tests/openconfig-yang-types-test.yang b/regexp-tests/openconfig-yang-types-test.yang index 2f6ca1ba6..6539ba6b7 100644 --- a/regexp-tests/openconfig-yang-types-test.yang +++ b/regexp-tests/openconfig-yang-types-test.yang @@ -5,6 +5,19 @@ module openconfig-yang-types-test { import pattern-test { prefix "pt"; } import openconfig-yang-types { prefix "oc-yang"; } + leaf hex-string-prefixed { + type oc-yang:hex-string-prefixed; + pt:pattern-test-pass "0x0000"; + pt:pattern-test-pass "0xffff"; + pt:pattern-test-pass "0xFFFF"; + pt:pattern-test-pass "0x0123456789abcdefABCDEF"; + pt:pattern-test-pass "0xFEDCBAfedcba9876543210"; + pt:pattern-test-fail "0xg"; + pt:pattern-test-fail "0xG"; + pt:pattern-test-fail "0x0123456789abcdefABCDEFG"; + pt:pattern-test-fail "0xFED0xba9876543210"; + } + leaf hex-string { type oc-yang:hex-string; pt:pattern-test-pass "00000"; diff --git a/release/models/keychain/openconfig-keychain.yang b/release/models/keychain/openconfig-keychain.yang index adf35eaad..d073f13a1 100644 --- a/release/models/keychain/openconfig-keychain.yang +++ b/release/models/keychain/openconfig-keychain.yang @@ -33,7 +33,13 @@ module openconfig-keychain { which may be then referenced by other models such as routing protocol management."; - oc-ext:openconfig-version "0.4.0"; + oc-ext:openconfig-version "0.5.0"; + +revision "2024-05-30" { + description + "Update key-id to a union of hex-string-prefixed and uint64."; + reference "0.5.0"; + } revision "2022-11-05" { description @@ -194,13 +200,16 @@ module openconfig-keychain { leaf key-id { type union { - type oc-yang:hex-string { - length "1..64"; + type oc-yang:hex-string-prefixed { + length "3..66"; } type uint64; } description - "Identifier for the key within the keychain."; + "Identifier for the key within the keychain. Note that the + hex-string type is deprecated and will be removed from a future + version of this model. Implementations should transition to using + the hex-string-prefixed type."; } leaf secret-key { diff --git a/release/models/policy/openconfig-policy-types.yang b/release/models/policy/openconfig-policy-types.yang index d33dfe28d..dea5bf0fa 100644 --- a/release/models/policy/openconfig-policy-types.yang +++ b/release/models/policy/openconfig-policy-types.yang @@ -10,6 +10,7 @@ module openconfig-policy-types { // import some basic types import ietf-yang-types { prefix yang; } import openconfig-extensions { prefix oc-ext; } + import openconfig-yang-types { prefix oc-yang; } // meta organization @@ -24,9 +25,15 @@ module openconfig-policy-types { policy. It can be imported by modules that contain protocol- specific policy conditions and actions."; - oc-ext:openconfig-version "3.2.3"; + oc-ext:openconfig-version "3.3.0"; - revision "2022-11-08" { + revision "2024-05-14" { + description + "Add hex-string-prefixed to typedef tag-type."; + reference "3.3.0"; + } + +revision "2022-11-08" { description "Add INSTALL_PROTOCOL_TYPE local."; reference "3.2.3"; @@ -165,14 +172,18 @@ module openconfig-policy-types { type union { type uint32; type yang:hex-string; + type oc-yang:hex-string-prefixed { + length "3..18"; + } } - description "type for expressing route tags on a local system, - including IS-IS and OSPF; may be expressed as either decimal or - hexidecimal integer"; + description + "Type for expressing route tags on a local system, including IS-IS + and OSPF; This may be expressed as either decimal or hexidecimal + integer."; reference - "RFC 2178 OSPF Version 2 + "RFC 2178 OSPF Version 2 specifies a 32 bit value RFC 5130 A Policy Control Mechanism in IS-IS Using - Administrative Tags"; + Administrative Tags specifies 32 bit and 64 bit values."; } identity INSTALL_PROTOCOL_TYPE { diff --git a/release/models/types/openconfig-yang-types.yang b/release/models/types/openconfig-yang-types.yang index c978cd049..dbbf88a6d 100644 --- a/release/models/types/openconfig-yang-types.yang +++ b/release/models/types/openconfig-yang-types.yang @@ -32,7 +32,13 @@ module openconfig-yang-types { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "0.3.1"; + oc-ext:openconfig-version "1.0.0"; + + revision "2024-05-30" { + description + "Add hex-string-prefixed typedef"; + reference "1.0.0"; + } revision "2021-07-14" { description @@ -109,12 +115,26 @@ module openconfig-yang-types { } typedef hex-string { + status deprecated; type string { pattern '[0-9a-fA-F]*'; oc-ext:posix-pattern '^[0-9a-fA-F]*$'; } description - "A string consisting of a hexadecimal characters."; + "A string consisting of a hexadecimal characters. This leaf is + deprecated and will removed in a future version of this model. + The type hex-string-prefixed should be used instead."; + } + + typedef hex-string-prefixed { + type string { + pattern '(0x)([0-9a-fA-F]{2})*'; + oc-ext:posix-pattern '^(0x)([0-9a-fA-F]{2})*$'; + length "3..max"; + } + description + "A string encoding a hexadecimal number with a prefix of '0x' followed + by a list of bytes."; } typedef counter32 { From 8dc427e2d7a8242848821566ca33e120f6845f2e Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Tue, 30 Jul 2024 09:39:06 -0700 Subject: [PATCH 351/372] Optical channel reference to it's logical channel (#1130) * Add a state leaf to optical channels to reference their logical channel assignment --- .../openconfig-terminal-device.yang | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-terminal-device.yang b/release/models/optical-transport/openconfig-terminal-device.yang index c9289282a..8001cfb60 100644 --- a/release/models/optical-transport/openconfig-terminal-device.yang +++ b/release/models/optical-transport/openconfig-terminal-device.yang @@ -77,7 +77,14 @@ module openconfig-terminal-device { ports per linecard, separate linecards for client and line ports, etc.)."; - oc-ext:openconfig-version "1.9.1"; + oc-ext:openconfig-version "1.9.2"; + + revision "2024-06-12" { + description + "Add a state leaf to optical channels to reference their logical + channel assignment."; + reference "1.9.2"; + } revision "2023-12-13" { description @@ -1325,6 +1332,18 @@ module openconfig-terminal-device { to the same value across related optical channels."; } + leaf logical-channel-assignment { + type leafref { + path "/oc-opt-term:terminal-device/oc-opt-term:logical-channels" + + "/oc-opt-term:channel/oc-opt-term:index"; + } + description + "Reference to the logical channel that is directly assigned + to this optical channel if it is assigned to a logical channel. + The logical channel must also reference this optical channel at + logical-channel-assignments/assignment/state/optical-channel"; + } + uses oc-transceiver:optical-power-state; container chromatic-dispersion { From e03930aea3338a07738b5805551d98f8a34bbe94 Mon Sep 17 00:00:00 2001 From: Anukul Verma <163091262+Verma-Anukul@users.noreply.github.com> Date: Tue, 6 Aug 2024 22:19:37 +0530 Subject: [PATCH 352/372] Adding NTP auth-key reference for NTP server config (#1149) Issue : NTP model has key-list, but there is no way to reference the same from ntp servers. Fix : Added a new leafref in server config container to reference configured key. --- release/models/system/openconfig-system.yang | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index e63b5859c..3352fd221 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,7 +47,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2024-07-15" { + description + "Added auth key reference in ntp server configuration."; + reference "2.1.0"; + } revision "2023-12-20" { description @@ -748,6 +754,14 @@ module openconfig-system { description "Source address to use on outgoing NTP packets"; } + + leaf key-id { + type leafref { + path "../../../../ntp-keys/ntp-key/key-id"; + } + description + "Reference to NTP authentication key for this server."; + } } grouping system-ntp-server-state { From 5f0f4e5ab66f11c34661378599e32bff873ec2dd Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 6 Aug 2024 09:50:26 -0700 Subject: [PATCH 353/372] Add backup-active to AFT NHG state (#1100) * add backup-active to AFT NHG state --- release/models/aft/openconfig-aft-common.yang | 22 ++++++++++++++++++- .../models/aft/openconfig-aft-ethernet.yang | 8 ++++++- release/models/aft/openconfig-aft-ipv4.yang | 8 ++++++- release/models/aft/openconfig-aft-ipv6.yang | 8 ++++++- release/models/aft/openconfig-aft-mpls.yang | 16 ++++++-------- release/models/aft/openconfig-aft-pf.yang | 8 ++++++- .../aft/openconfig-aft-state-synced.yang | 8 ++++++- release/models/aft/openconfig-aft.yang | 8 ++++++- 8 files changed, 70 insertions(+), 16 deletions(-) diff --git a/release/models/aft/openconfig-aft-common.yang b/release/models/aft/openconfig-aft-common.yang index ac924b67c..c69587e0f 100644 --- a/release/models/aft/openconfig-aft-common.yang +++ b/release/models/aft/openconfig-aft-common.yang @@ -23,7 +23,13 @@ submodule openconfig-aft-common { "Submodule containing definitions of groupings that are re-used across multiple contexts within the AFT model."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description @@ -693,6 +699,20 @@ submodule openconfig-aft-common { entries within the next-hop group become unusable, the backup next-hop group is used if specified."; } + + leaf backup-active { + type boolean; + default false; + description + "Set to true if and only if the device no longer forwards traffic + using the primary NextHops of this NextHopGroup and instead uses + the specified backup-next-hop-group. This leaf should be set to + false if the backup-next-hop-group is either unspecified or unused + by the device."; + } + + + } grouping aft-nhg-nh-state { diff --git a/release/models/aft/openconfig-aft-ethernet.yang b/release/models/aft/openconfig-aft-ethernet.yang index 2845c9383..b2c0758df 100644 --- a/release/models/aft/openconfig-aft-ethernet.yang +++ b/release/models/aft/openconfig-aft-ethernet.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ethernet { "Submodule containing definitions of groupings for the abstract forwarding tables for Ethernet."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description diff --git a/release/models/aft/openconfig-aft-ipv4.yang b/release/models/aft/openconfig-aft-ipv4.yang index f6152aca8..d582b2ad7 100644 --- a/release/models/aft/openconfig-aft-ipv4.yang +++ b/release/models/aft/openconfig-aft-ipv4.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv4 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv4."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description diff --git a/release/models/aft/openconfig-aft-ipv6.yang b/release/models/aft/openconfig-aft-ipv6.yang index 1976a7271..c8aede635 100644 --- a/release/models/aft/openconfig-aft-ipv6.yang +++ b/release/models/aft/openconfig-aft-ipv6.yang @@ -20,7 +20,13 @@ submodule openconfig-aft-ipv6 { "Submodule containing definitions of groupings for the abstract forwarding tables for IPv6."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description diff --git a/release/models/aft/openconfig-aft-mpls.yang b/release/models/aft/openconfig-aft-mpls.yang index 77091afa4..2418a5a9e 100644 --- a/release/models/aft/openconfig-aft-mpls.yang +++ b/release/models/aft/openconfig-aft-mpls.yang @@ -21,20 +21,18 @@ submodule openconfig-aft-mpls { "Submodule containing definitions of groupings for the abstract forwarding table for MPLS label forwarding."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; - revision "2024-01-26" { + revision "2024-04-25" { description - "Add gre container under next-hops aft entry state. - Add src-ip, dst-ip and ttl under gre aft entry state - for telemetry."; - reference "2.5.0"; + "Add backup-active to AFT NHG state."; + reference "2.6.0"; } - revision "2023-09-26" { + revision "2024-04-25" { description - "Add next-hop-group-name in NHG AFT entry state."; - reference "2.4.0"; + "Add backup-active to AFT NHG state."; + reference "2.5.0"; } revision "2023-04-19" { diff --git a/release/models/aft/openconfig-aft-pf.yang b/release/models/aft/openconfig-aft-pf.yang index fc72ece6e..8f0d5a243 100644 --- a/release/models/aft/openconfig-aft-pf.yang +++ b/release/models/aft/openconfig-aft-pf.yang @@ -28,7 +28,13 @@ submodule openconfig-aft-pf { fields other than the destination address that is used in other forwarding tables."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description diff --git a/release/models/aft/openconfig-aft-state-synced.yang b/release/models/aft/openconfig-aft-state-synced.yang index 166ad7ead..3e0950826 100644 --- a/release/models/aft/openconfig-aft-state-synced.yang +++ b/release/models/aft/openconfig-aft-state-synced.yang @@ -16,7 +16,13 @@ submodule openconfig-aft-state-synced { "Submodule containing definitions of groupings for the state synced signals corresponding to various abstract forwarding tables."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description diff --git a/release/models/aft/openconfig-aft.yang b/release/models/aft/openconfig-aft.yang index 011956948..d1af3e977 100644 --- a/release/models/aft/openconfig-aft.yang +++ b/release/models/aft/openconfig-aft.yang @@ -42,7 +42,13 @@ module openconfig-aft { is referred to as an Abstract Forwarding Table (AFT), rather than the FIB."; - oc-ext:openconfig-version "2.5.0"; + oc-ext:openconfig-version "2.6.0"; + + revision "2024-04-25" { + description + "Add backup-active to AFT NHG state."; + reference "2.6.0"; + } revision "2024-01-26" { description From 94683fe27ad513b88b1d71f9e0430ac8a3fbbdd9 Mon Sep 17 00:00:00 2001 From: Eric Breverman Date: Thu, 8 Aug 2024 17:44:00 -0700 Subject: [PATCH 354/372] Attenuator mode - system controlled (#1147) * SYSTEM_CONTROLLED attenuator mode. --- .../openconfig-optical-attenuator.yang | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/release/models/optical-transport/openconfig-optical-attenuator.yang b/release/models/optical-transport/openconfig-optical-attenuator.yang index 94b3d71bf..cffe56a5a 100644 --- a/release/models/optical-transport/openconfig-optical-attenuator.yang +++ b/release/models/optical-transport/openconfig-optical-attenuator.yang @@ -24,7 +24,13 @@ module openconfig-optical-attenuator { for variable optical attenuators, deployed as part of a transport line system."; - oc-ext:openconfig-version "0.1.0"; + oc-ext:openconfig-version "0.2.0"; + + revision "2024-07-10" { + description + "Adding SYSTEM_CONTROLLED mode with accompanying leaves"; + reference "0.2.0"; + } revision "2019-07-19" { description @@ -62,6 +68,12 @@ module openconfig-optical-attenuator { "Constant attenuation mode"; } + identity SYSTEM_CONTROLLED { + base OPTICAL_ATTENUATOR_MODE; + description + "System controls the attenuation value."; + } + // grouping statements @@ -112,6 +124,28 @@ module openconfig-optical-attenuator { maintain constant output power. When false, the attenuator is set max attenuation or blocked."; } + + leaf max-output-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The max power level allowed on the output of attenuator. This leaf + is optional when in SYSTEM_CONTROLLED mode."; + } + + leaf max-output-power-threshold { + type decimal64 { + fraction-digits 2; + } + units dB; + description + "If the system-derived-target-output-power is equal to or greater than + 'max-output-power + max-output-power-threshold', a device alarm will + be raised within /system/alarms. This leaf is only relevant when + in SYSTEM_CONTROLLED mode."; + } } grouping optical-attenuator-state { @@ -150,6 +184,15 @@ module openconfig-optical-attenuator { port. This leaf is only valid for ports of type EGRESS."; } + leaf system-derived-target-output-power { + type decimal64 { + fraction-digits 2; + } + units dBm; + description + "The target output power as determined by the device. + This leaf is only relevant when in SYSTEM_CONTROLLED mode."; + } container actual-attenuation { description From 6e28490719bd8a3966ce9a78c82c3b7a5a249412 Mon Sep 17 00:00:00 2001 From: Nathan Kitchen Date: Fri, 9 Aug 2024 13:26:30 -0700 Subject: [PATCH 355/372] Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION. (#239) * Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION. * (M) release/models/ospf/openconfig-ospfv2-lsdb.yang --- .../models/ospf/openconfig-ospfv2-area-interface.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-area.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-common.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-global.yang | 8 +++++++- release/models/ospf/openconfig-ospfv2-lsdb.yang | 10 ++++++++-- release/models/ospf/openconfig-ospfv2.yang | 8 +++++++- 6 files changed, 43 insertions(+), 7 deletions(-) diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 3045ad03c..7fa65cee0 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,13 @@ submodule openconfig-ospfv2-area-interface { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.5.1"; + oc-ext:openconfig-version "0.5.2"; + + revision "2024-06-17" { + description + "Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION."; + reference "0.5.2"; + } revision "2023-11-01" { description diff --git a/release/models/ospf/openconfig-ospfv2-area.yang b/release/models/ospf/openconfig-ospfv2-area.yang index e0f0020f8..f65f58979 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-area { "This submodule provides OSPFv2 configuration and operational state parameters that are specific to the area context"; - oc-ext:openconfig-version "0.5.1"; + oc-ext:openconfig-version "0.5.2"; + + revision "2024-06-17" { + description + "Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION."; + reference "0.5.2"; + } revision "2023-11-01" { description diff --git a/release/models/ospf/openconfig-ospfv2-common.yang b/release/models/ospf/openconfig-ospfv2-common.yang index 8bfd890b4..34f9c3b23 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,13 @@ submodule openconfig-ospfv2-common { "This submodule provides OSPFv2 configuration and operational state parameters that are shared across multiple contexts"; - oc-ext:openconfig-version "0.5.1"; + oc-ext:openconfig-version "0.5.2"; + + revision "2024-06-17" { + description + "Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION."; + reference "0.5.2"; + } revision "2023-11-01" { description diff --git a/release/models/ospf/openconfig-ospfv2-global.yang b/release/models/ospf/openconfig-ospfv2-global.yang index e6c0256ec..96504073c 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,13 @@ submodule openconfig-ospfv2-global { "This submodule provides OSPFv2 configuration and operational state parameters that are global to a particular OSPF instance"; - oc-ext:openconfig-version "0.5.1"; + oc-ext:openconfig-version "0.5.2"; + + revision "2024-06-17" { + description + "Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION."; + reference "0.5.2"; + } revision "2023-11-01" { description diff --git a/release/models/ospf/openconfig-ospfv2-lsdb.yang b/release/models/ospf/openconfig-ospfv2-lsdb.yang index e1eda9fdd..113d31630 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,13 @@ submodule openconfig-ospfv2-lsdb { "An OpenConfig model for the Open Shortest Path First (OSPF) version 2 link-state database (LSDB)"; - oc-ext:openconfig-version "0.5.1"; + oc-ext:openconfig-version "0.5.2"; + + revision "2024-06-17" { + description + "Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION."; + reference "0.5.2"; + } revision "2023-11-01" { description @@ -749,7 +755,7 @@ submodule openconfig-ospfv2-lsdb { } // grace LSA container router-information { - when "../state/type = 'oc-ospf-types:ROUTER_INFORMATION_LSA'" { + when "../state/type = 'oc-ospf-types:ROUTER_INFORMATION'" { description "Include the router-information container when the opaque LSA type is specified to be an RI LSA"; diff --git a/release/models/ospf/openconfig-ospfv2.yang b/release/models/ospf/openconfig-ospfv2.yang index fb5a7e031..f909bdd85 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,13 @@ module openconfig-ospfv2 { "An OpenConfig model for Open Shortest Path First (OSPF) version 2"; - oc-ext:openconfig-version "0.5.1"; + oc-ext:openconfig-version "0.5.2"; + + revision "2024-06-17" { + description + "Correct ROUTER_INFORMATION_LSA to ROUTER_INFORMATION."; + reference "0.5.2"; + } revision "2023-11-01" { description From 147cfe8027cf80d86cab485fc05d735f2b00538c Mon Sep 17 00:00:00 2001 From: Likai Liu Date: Mon, 19 Aug 2024 17:02:18 -0400 Subject: [PATCH 356/372] Correction to loopback-mode-type FACILITY and TERMINAL #1135 (#1155) * Correction to loopback-mode-type FACILITY and TERMINAL #1135 --- .../openconfig-transport-types.yang | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/release/models/optical-transport/openconfig-transport-types.yang b/release/models/optical-transport/openconfig-transport-types.yang index b38fb1c2c..7c3c6a481 100644 --- a/release/models/optical-transport/openconfig-transport-types.yang +++ b/release/models/optical-transport/openconfig-transport-types.yang @@ -22,7 +22,14 @@ module openconfig-transport-types { "This module contains general type definitions and identities for optical transport models."; - oc-ext:openconfig-version "0.25.0"; + oc-ext:openconfig-version "1.0.0"; + + revision "2024-07-24" { + description + "Corrected description for FACILITY and TERMINAL loopback-mode-type + enums."; + reference "1.0.0"; + } revision "2024-06-28" { description @@ -221,19 +228,19 @@ module openconfig-transport-types { "No loopback is applied"; } enum FACILITY { - description - "A port internal loopback at ASIC level. The loopback directs - traffic normally transmitted on the port back to the device as - if received on the same port from an external source. Note this - mode is used when internal loopback does NOT specify MAC or PHY."; - } - enum TERMINAL { description "A port external loopback at ASIC level. The loopback which directs traffic received from an external source on the port back out the transmit side of the same port. Note this mode is used when external loopback does NOT specify MAC or PHY"; } + enum TERMINAL { + description + "A port internal loopback at ASIC level. The loopback directs + traffic normally transmitted on the port back to the device as + if received on the same port from an external source. Note this + mode is used when internal loopback does NOT specify MAC or PHY."; + } enum ASIC_PHY_LOCAL { description "A port internal loopback at PHY module. The loopback directs From 5c402a135033b6e07b925e66a73eeab47aa87f0c Mon Sep 17 00:00:00 2001 From: Jake Snyder Date: Wed, 21 Aug 2024 11:27:06 -0600 Subject: [PATCH 357/372] #1159 wifi mac transition modes (#1162) * fixing #1159 adding transition modes * Update version and revision history * fixed trailing whitespace --- release/models/wifi/openconfig-wifi-mac.yang | 41 +++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index 3bb25cfc4..2280a5a42 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,7 +26,13 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.3.1"; + oc-ext:openconfig-version "1.3.2"; + + revision "2024-08-07" { + description + "Add transition modes ENHANCED_OPEN_TRANSITION, WPA3_2_SAE_TRANSITION and + WPA3_2_ENTERPRISE_TRANSITION"; + } revision "2023-05-26" { description @@ -253,15 +259,30 @@ module openconfig-wifi-mac { description "Open authentication with Opportunistic Wireless Encryption."; } + enum ENHANCED_OPEN_TRANSITION { + description + "Open authentication with Opportunistic Wireless Encryption and + support for transition mode."; + } enum WPA3_SAE { description "WPA3-SAE using Simultaneous Authentication of Equals (SAE)."; } + enum WPA3_2_SAE_TRANSITION { + description + "WPA3-SAE using Simultaneous Authentication of Equals (SAE) and + WPA2-PSK AKMs."; + } enum WPA3_ENTERPRISE { description "WPA3-Enterprise with 802.1X SHA-256 authentication key management."; } + enum WPA3_2_ENTERPRISE_TRANSITION { + description + "WPA3-Enterprise with 802.1X SHA-256 authentication key + management."; + } enum WPA3_ENTERPRISE_192_BIT { description "WPA3-Enterprise with 802.1X SHA-384 authentication key @@ -284,7 +305,8 @@ module openconfig-wifi-mac { } leaf wpa3-psk { - when "../opmode = 'WPA3_SAE'"; + when "../opmode = 'WPA3_SAE' or + ../opemode = 'WPA3_2_SAE_TRANSITION"; type string { length "8..63"; } @@ -296,8 +318,10 @@ module openconfig-wifi-mac { when "../opmode = 'WPA2_ENTERPRISE' or ../opmode = 'WPA2_PERSONAL' or ../opmode = 'WPA3_ENTERPRISE' or + ../opmode = 'WPA3_2_ENTERPRISE_TRANSITION ../opmode = 'WPA3_ENTERPRISE_192_BIT' or - ../opmode = 'WPA3_SAE'"; + ../opmode = 'WPA3_SAE' or + ../opmode = 'WPA3_2_SAE_TRANSITION'"; type string; description "Specifies the RADIUS server-group to be used, @@ -367,9 +391,14 @@ module openconfig-wifi-mac { } leaf mfp { - when "../opmode = 'WPA3_ENTERPRISE' or ../opmode = - 'WPA3_ENTERPRISE_192_BIT' or ../opmode = - 'WPA3_SAE' or ../opmode = 'ENHANCED_OPEN'"; + when "../opmode = 'WPA3_ENTERPRISE' or + ../opmode = 'WPA3_2_ENTERPRISE_TRANSITION + ../opmode = 'WPA3_ENTERPRISE_192_BIT' or + ../opmode = 'WPA3_SAE' or + ../opmode = 'WPA3_2_SAE_TRANSITION + ../opmode = 'ENHANCED_OPEN' + ../opmode = 'ENHANCED_OPEN_TRANSITION + "; type boolean; mandatory true; description From bdf3c7d725d75355317f75e02d34a49f2bf9c328 Mon Sep 17 00:00:00 2001 From: "Missae W. Sasaya" Date: Thu, 22 Aug 2024 15:40:19 -0300 Subject: [PATCH 358/372] Fix XPath syntax error caught by pyang in openconfig-wifi-mac.yang (#1169) * Fix XPath syntax caught by pyang: ./wifi/openconfig-wifi-mac.yang:309: error: XPath syntax error: syntax error ./wifi/openconfig-wifi-mac.yang:324: error: XPath syntax error: syntax error ./wifi/openconfig-wifi-mac.yang:401: error: XPath syntax error: syntax error * Fix revision statements --- release/models/wifi/openconfig-wifi-mac.yang | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/release/models/wifi/openconfig-wifi-mac.yang b/release/models/wifi/openconfig-wifi-mac.yang index 2280a5a42..b9c85f634 100644 --- a/release/models/wifi/openconfig-wifi-mac.yang +++ b/release/models/wifi/openconfig-wifi-mac.yang @@ -26,12 +26,18 @@ module openconfig-wifi-mac { description "Model for managing MAC layer configuration of Radio interfaces."; - oc-ext:openconfig-version "1.3.2"; + oc-ext:openconfig-version "1.3.3"; + + revision "2024-08-22" { + description "Fix XPath expression to avoid pyang error"; + reference "1.3.3"; + } revision "2024-08-07" { description "Add transition modes ENHANCED_OPEN_TRANSITION, WPA3_2_SAE_TRANSITION and WPA3_2_ENTERPRISE_TRANSITION"; + reference "1.3.2"; } revision "2023-05-26" { @@ -306,7 +312,7 @@ module openconfig-wifi-mac { leaf wpa3-psk { when "../opmode = 'WPA3_SAE' or - ../opemode = 'WPA3_2_SAE_TRANSITION"; + ../opmode = 'WPA3_2_SAE_TRANSITION'"; type string { length "8..63"; } @@ -318,7 +324,7 @@ module openconfig-wifi-mac { when "../opmode = 'WPA2_ENTERPRISE' or ../opmode = 'WPA2_PERSONAL' or ../opmode = 'WPA3_ENTERPRISE' or - ../opmode = 'WPA3_2_ENTERPRISE_TRANSITION + ../opmode = 'WPA3_2_ENTERPRISE_TRANSITION' or ../opmode = 'WPA3_ENTERPRISE_192_BIT' or ../opmode = 'WPA3_SAE' or ../opmode = 'WPA3_2_SAE_TRANSITION'"; @@ -392,12 +398,12 @@ module openconfig-wifi-mac { leaf mfp { when "../opmode = 'WPA3_ENTERPRISE' or - ../opmode = 'WPA3_2_ENTERPRISE_TRANSITION + ../opmode = 'WPA3_2_ENTERPRISE_TRANSITION' or ../opmode = 'WPA3_ENTERPRISE_192_BIT' or ../opmode = 'WPA3_SAE' or - ../opmode = 'WPA3_2_SAE_TRANSITION - ../opmode = 'ENHANCED_OPEN' - ../opmode = 'ENHANCED_OPEN_TRANSITION + ../opmode = 'WPA3_2_SAE_TRANSITION' or + ../opmode = 'ENHANCED_OPEN' or + ../opmode = 'ENHANCED_OPEN_TRANSITION' "; type boolean; mandatory true; From b492f6746dd957fc0e14bdfa408a584af991aeda Mon Sep 17 00:00:00 2001 From: Shashank-arista <153792517+Shashank-arista@users.noreply.github.com> Date: Tue, 27 Aug 2024 02:42:42 +0530 Subject: [PATCH 359/372] Augment mpls static model to support ECMP of next hops (#1138) Co-authored-by: Darren Loher --- release/models/mpls/openconfig-mpls-igp.yang | 11 +- .../models/mpls/openconfig-mpls-static.yang | 123 ++++++++++++++++-- release/models/mpls/openconfig-mpls-te.yang | 11 +- release/models/mpls/openconfig-mpls.yang | 11 +- 4 files changed, 144 insertions(+), 12 deletions(-) diff --git a/release/models/mpls/openconfig-mpls-igp.yang b/release/models/mpls/openconfig-mpls-igp.yang index 6bbbf1cd8..c88eb0807 100644 --- a/release/models/mpls/openconfig-mpls-igp.yang +++ b/release/models/mpls/openconfig-mpls-igp.yang @@ -21,7 +21,16 @@ submodule openconfig-mpls-igp { "Configuration generic configuration parameters for IGP-congruent LSPs"; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.6.0"; + + revision "2024-06-19" { + description + "Added support with backward compatibility to configure ECMP + of next-hops for the same LSP name. Also marked attributes + push-label, next-hop and interface as deprecated under egress, + transit and ingress config"; + reference "3.6.0"; + } revision "2023-12-14" { description diff --git a/release/models/mpls/openconfig-mpls-static.yang b/release/models/mpls/openconfig-mpls-static.yang index d114fe16c..a8e7c2faf 100644 --- a/release/models/mpls/openconfig-mpls-static.yang +++ b/release/models/mpls/openconfig-mpls-static.yang @@ -24,7 +24,16 @@ submodule openconfig-mpls-static { "Defines static LSP configuration"; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.6.0"; + + revision "2024-06-19" { + description + "Added support with backward compatibility to configure ECMP + of next-hops for the same LSP name. Also marked attributes + push-label, next-hop and interface as deprecated under egress, + transit and ingress config"; + reference "3.6.0"; + } revision "2023-12-14" { description @@ -156,36 +165,126 @@ submodule openconfig-mpls-static { // grouping statements - grouping static-lsp-common-config { + grouping static-lsp-nexthop-index { description - "common definitions for static LSPs"; + "Next hop index definition for static LSPs"; - leaf next-hop { + leaf index { + type uint32; + description + "An user-specified identifier utilised to uniquely reference + the next-hop entry in the next-hop list. The value of this + index has no semantic meaning other than for referencing + the entry."; + } + } + + grouping static-lsp-nexthop-common-config { + description + "Common definition of next hop configuration for static LSPs"; + + leaf ip-address { type inet:ip-address; description - "next hop IP address for the LSP"; + "Next hop IP address for the LSP"; + } + + leaf push-label { + type oc-mplst:mpls-label; + description + "Label value to push at the current hop for the + LSP"; } + // interface-ref + uses oc-if:interface-ref-common; + } + + grouping static-lsp-common-config { + description + "Common definitions for static LSPs"; + leaf incoming-label { type oc-mplst:mpls-label; description - "label value on the incoming packet"; + "Label value on the incoming packet"; + } + + leaf next-hop { + type inet:ip-address; + status deprecated; + description + "Next hop IP address for the LSP"; } leaf push-label { type oc-mplst:mpls-label; + status deprecated; description - "label value to push at the current hop for the + "Label value to push at the current hop for the LSP"; } // interface-ref - uses oc-if:interface-ref-common; + uses oc-if:interface-ref-common { + status deprecated; + } leaf metric { type uint8; description - "Specifies metric value used for the MPLS route"; + "Specifies metric value used for the MPLS route."; + } + } + + grouping static-lsp-nexthops-common { + description + "MPLS Static LSP next-hops configuration"; + + container lsp-next-hops { + description + "Configuration and state parameters relating to the + next-hops that are to be utilised for the MPLS static + route being specified"; + + list lsp-next-hop { + key "index"; + + description + "A list of next-hops to be utilised for the MPLS + static route being specified."; + + leaf index { + type leafref { + path "../config/index"; + } + description + "A reference to the index of the current next-hop. + The index is intended to be a user-specified value + which can be used to reference the next-hop in + question, without any other semantics being + assigned to it."; + } + + container config { + description + "Configuration parameters relating to the next-hop + entry"; + + uses static-lsp-nexthop-index; + uses static-lsp-nexthop-common-config; + } + + container state { + config false; + description + "Operational state parameters relating to the + next-hop entry"; + + uses static-lsp-nexthop-index; + uses static-lsp-nexthop-common-config; + } + } } } @@ -227,6 +326,8 @@ submodule openconfig-mpls-static { uses static-lsp-ingress-config; uses static-lsp-ingress-state; } + + uses static-lsp-nexthops-common; } } @@ -268,6 +369,8 @@ submodule openconfig-mpls-static { uses static-lsp-transit-config; uses static-lsp-transit-state; } + + uses static-lsp-nexthops-common; } } @@ -309,6 +412,8 @@ submodule openconfig-mpls-static { uses static-lsp-egress-config; uses static-lsp-egress-state; } + + uses static-lsp-nexthops-common; } } diff --git a/release/models/mpls/openconfig-mpls-te.yang b/release/models/mpls/openconfig-mpls-te.yang index 4b12dc66e..647325357 100644 --- a/release/models/mpls/openconfig-mpls-te.yang +++ b/release/models/mpls/openconfig-mpls-te.yang @@ -30,7 +30,16 @@ submodule openconfig-mpls-te { signaling protocol or mechanism (see related submodules for signaling protocol-specific configuration)."; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.6.0"; + + revision "2024-06-19" { + description + "Added support with backward compatibility to configure ECMP + of next-hops for the same LSP name. Also marked attributes + push-label, next-hop and interface as deprecated under egress, + transit and ingress config"; + reference "3.6.0"; + } revision "2023-12-14" { description diff --git a/release/models/mpls/openconfig-mpls.yang b/release/models/mpls/openconfig-mpls.yang index f78e1a0ec..693d67e4c 100644 --- a/release/models/mpls/openconfig-mpls.yang +++ b/release/models/mpls/openconfig-mpls.yang @@ -70,7 +70,16 @@ module openconfig-mpls { +------+ |ROUTING| +-----+ +-------+ "; - oc-ext:openconfig-version "3.5.0"; + oc-ext:openconfig-version "3.6.0"; + + revision "2024-06-19" { + description + "Added support with backward compatibility to configure ECMP + of next-hops for the same LSP name. Also marked attributes + push-label, next-hop and interface as deprecated under egress, + transit and ingress config"; + reference "3.6.0"; + } revision "2023-12-14" { description From abba9293800de056022d333d9c79dd43c5be9c56 Mon Sep 17 00:00:00 2001 From: tengyiG <108433002+tengyiG@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:32:47 -0700 Subject: [PATCH 360/372] Update openconfig-keychain-types.yang (#1173) --- .../keychain/openconfig-keychain-types.yang | 26 ++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/release/models/keychain/openconfig-keychain-types.yang b/release/models/keychain/openconfig-keychain-types.yang index d84b1f54c..c923f9ea1 100644 --- a/release/models/keychain/openconfig-keychain-types.yang +++ b/release/models/keychain/openconfig-keychain-types.yang @@ -21,7 +21,13 @@ module openconfig-keychain-types { "This module contains general data definitions for use in keychain-based authentication."; - oc-ext:openconfig-version "0.2.0"; + oc-ext:openconfig-version "0.3.0"; + + revision "2024-08-27" { + description + "Added AES_128_CMAC and AES_256_CMAC"; + reference "0.3.0"; + } revision "2022-03-01" { description @@ -137,4 +143,22 @@ module openconfig-keychain-types { reference "RFC 4494 - The AES-CMAC-96 Algorithm and Its Use with IPsec"; } + + identity AES_128_CMAC { + base CRYPTO_TYPE; + description + "AES-128-CMAC keyed hash function based on a AES-128 block + cipher."; + reference + "RFC 4493 - The AES-CMAC Algorithm and Its Use with IPsec"; + } + + identity AES_256_CMAC { + base CRYPTO_TYPE; + description + "AES-256-CMAC keyed hash function based on a AES-256 block + cipher."; + reference + "RFC 4493 - The AES-CMAC Algorithm and Its Use with IPsec"; + } } From b9845f14fa4c2f6f6c4975dcf9f264f94bc910ae Mon Sep 17 00:00:00 2001 From: Aaron Bamberger Date: Wed, 28 Aug 2024 18:34:04 -0500 Subject: [PATCH 361/372] Updates to network-instance EVPN models for VLAN-aware-bundle support (#1124) * Add a new conditional leaf-lest, "vni-list", to the EVI Vxlan model, to allow the configuration of VLAN-aware-bundle MACVRFs * Make the existing "vni" leaf conditional on the MACVRF being a VLAN-based MACVRF. Since this is the only type of MACVRF currently supported by the model, this is a backwards compatible change Co-authored-by: Darren Loher --- .../network-instance/openconfig-evpn.yang | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index b9870e461..ab110a894 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,14 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.9.0"; + oc-ext:openconfig-version "0.10.0"; + + revision "2024-06-07" { + description + "Add new vni-list leaf list to EVI config to support VLAN-aware-bundle + MACVRFs. Make existing vni leaf conditional on MACVRF type being VLAN-based"; + reference "0.10.0"; + } revision "2024-05-14" { description @@ -676,12 +683,27 @@ module openconfig-evpn { Using Ethernet VPN"; leaf vni { + when "../../../config/service-type = 'oc-evpn-types:VLAN_BASED' or + ../../../config/service-type = 'oc-evpn-types:VLAN_BUNDLE'" { + description + "For VLAN-based and VLAN-bundle EVIs, use a single VNI"; + } type oc-evpn-types:vni-id; description "Virtual Network Identifier (VNI) associated to the EVI. This VNI is used for ingress and egress in the VXLAN domain."; } + leaf-list vni-list { + when "../../../config/service-type = 'oc-evpn-types:VLAN_AWARE'" { + description + "For VLAN-aware-bundle EVIs, use a list of VNIs"; + } + type oc-evpn-types:vni-id; + description + "List of VNIs participating in a VLAN-aware-bundle EVI"; + } + leaf overlay-endpoint-network-instance { type leafref { path "/network-instances/network-instance/name"; From 6b19efbb170259b6fda5e1faa43188cb8a98337c Mon Sep 17 00:00:00 2001 From: Aaron Bamberger Date: Wed, 28 Aug 2024 20:48:44 -0500 Subject: [PATCH 362/372] Updates to network instance models for VLAN-VNI and VRF-VNI mappings (#1125) * Introduce new container "local-endpoint-vnis" in Vxlan endpoint model to allow the local configuration of VLAN-to-VNI and VRF-to-VNI mappings --- .../network-instance/openconfig-evpn.yang | 117 ++++++++++++------ 1 file changed, 81 insertions(+), 36 deletions(-) diff --git a/release/models/network-instance/openconfig-evpn.yang b/release/models/network-instance/openconfig-evpn.yang index ab110a894..a3fd800e3 100644 --- a/release/models/network-instance/openconfig-evpn.yang +++ b/release/models/network-instance/openconfig-evpn.yang @@ -40,7 +40,14 @@ module openconfig-evpn { domains, this is not currently supported and requires an extension of the model."; - oc-ext:openconfig-version "0.10.0"; + oc-ext:openconfig-version "0.11.0"; + + revision "2024-08-14" { + description + "Add new local-endpoint-vnis config container to Vxlan connection point to allow + configuration of local VNI-to-VLAN and VNI-to-VRF maps"; + reference "0.11.0"; + } revision "2024-06-07" { description @@ -1046,6 +1053,7 @@ module openconfig-evpn { config false; description "Container for state parameters related to this L2VNI or L3VNI"; + uses evpn-endpoint-vni-config; uses evpn-endpoint-vni-state; } @@ -1053,6 +1061,39 @@ module openconfig-evpn { uses ipv6-top; } } + + container local-endpoint-vnis { + description + "Top level container for local configuration related to Layer 2 virtual + network identifiers (L2VNIs) and Layer 3 virtual network identifiers + (L3VNIs) in the default network instance"; + + list local-endpoint-vni { + key "vni"; + description "List of L2VNIs and L3VNIs configured on the local VTEP"; + + leaf vni { + type leafref { + path '../config/vni'; + } + description "L2VNI or L3VNI Identifier"; + } + + container config { + description + "Container for configuration parameters related to this local L2VNI or + L3VNI"; + uses evpn-endpoint-vni-config; + } + + container state { + config false; + description + "Container for state parameters related to this local L2VNI or L3VNI"; + uses evpn-endpoint-vni-config; + } + } + } } grouping evpn-endpoint-peer-state { @@ -1197,16 +1238,52 @@ module openconfig-evpn { } } - grouping evpn-endpoint-vni-state { + grouping evpn-endpoint-vni-config { description - "Grouping for L2VNI and L3VNI state information learned on the - local VXLAN Tunnel End Point from remote VTEPs"; + "Grouping for L2VNI and L3VNI configuration parameters"; leaf vni { type oc-evpn-types:evi-id; description "L2VNI or L3VNI Identifier"; } + leaf vni-type { + type enumeration { + enum L2 { + description + "This is a Layer 2 service virtual network identifier (L2VNI) + that is used for communication within the same subnet or + broadcast domain"; + } + enum L3 { + description + "This is a Layer 3 service virtual network identifier (L3VNI) + or VRF VNI that is used for communication between subnets"; + } + } + description "The type of virtual network identfier"; + } + + leaf bridge-domain { + type uint32; + description + "This reflects the configured VLAN or Bridge Domain that maps to this + L2VNI in the VXLAN fabric"; + } + + leaf l3-vrf-name { + type string; + description + "This refects the configured VRF instance that maps to this L3VNI + that is used for routing between subnets in the VXLAN fabric"; + } + } + + grouping evpn-endpoint-vni-state { + description + "Grouping for L2VNI and L3VNI state information learned on the + local VXLAN Tunnel End Point from remote VTEPs"; + leaf multidestination-traffic { type union { type oc-inet:ip-address; @@ -1240,23 +1317,6 @@ module openconfig-evpn { control-plane or data-plane"; } - leaf vni-type { - type enumeration { - enum L2 { - description - "This is a Layer 2 service virtual network identifier (L2VNI) - that is used for communication within the same subnet or - broadcast domain"; - } - enum L3 { - description - "This is a Layer 3 service virtual network identifier (L3VNI) - or VRF VNI that is used for communication between subnets"; - } - } - description "The type of virtual network identfier"; - } - leaf vni-state { type enumeration { enum UP { @@ -1290,20 +1350,5 @@ module openconfig-evpn { "Operational status of the SVI mapped to the L3VNI that is used for routing between subnets in the VXLAN fabric"; } - - leaf bridge-domain { - type uint32; - description - "This reflects the configured VLAN or Bridge Domain that maps to this - L2VNI in the VXLAN fabric"; - } - - leaf l3-vrf-name { - type string; - description - "This refects the configured VRF instance that maps to this L3VNI - that is used for routing between subnets in the VXLAN fabric"; - } - } } From 2c81874b3199f35a0e34b90bef91a74308e0b29b Mon Sep 17 00:00:00 2001 From: Alex Webster <31635844+awebsters@users.noreply.github.com> Date: Tue, 10 Sep 2024 19:49:00 -0400 Subject: [PATCH 363/372] Ntp auth types (#1163) * adding additional auth key types --- release/models/system/openconfig-system.yang | 44 +++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 3352fd221..8534a909f 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,7 +47,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "2.1.0"; + oc-ext:openconfig-version "2.2.0"; + + revision "2024-08-13" { + description + "Added additional auth key types"; + reference "2.2.0"; + } revision "2024-07-15" { description @@ -233,6 +239,42 @@ module openconfig-system { "MD5 encryption method"; } + identity NTP_AUTH_SHA1 { + base NTP_AUTH_TYPE; + description + "SHA1 encryption method"; + } + + identity NTP_AUTH_SHA256 { + base NTP_AUTH_TYPE; + description + "SHA256 encryption method"; + } + + identity NTP_AUTH_SHA384 { + base NTP_AUTH_TYPE; + description + "SHA384 encryption method"; + } + + identity NTP_AUTH_SHA512 { + base NTP_AUTH_TYPE; + description + "SHA512 encryption method"; + } + + identity NTP_AUTH_AES_CBC_128 { + base NTP_AUTH_TYPE; + description + "AES-CBC-128 encryption method"; + } + + identity NTP_AUTH_AES_CBC_256 { + base NTP_AUTH_TYPE; + description + "AES-CBC-256 encryption method"; + } + // typedef statements typedef timezone-name-type { From 2e49acd23578e9b6ee38da085a09bb13cc36ca04 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Thu, 12 Sep 2024 10:25:31 -0700 Subject: [PATCH 364/372] Add syslog TLS (#1166) * Add syslog over TLS --- .../system/openconfig-system-logging.yang | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system-logging.yang b/release/models/system/openconfig-system-logging.yang index f845547cb..c7eaae8a5 100644 --- a/release/models/system/openconfig-system-logging.yang +++ b/release/models/system/openconfig-system-logging.yang @@ -23,7 +23,13 @@ module openconfig-system-logging { "This module defines configuration and operational state data for common logging facilities on network systems."; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + +revision "2024-08-20" { + description + "Adding tls support for syslog."; + reference "0.7.0"; + } revision "2023-07-20" { description @@ -429,6 +435,22 @@ revision "2023-07-20" { "Sets the destination port number for syslog UDP messages to the server. The default for syslog is 514."; } + + leaf transport-security { + type boolean; + description + "Indicates if syslog transport layer security (TLS) is enabled."; + } + + leaf tls-profile-id { + type string; + description + "The ID of this syslog client's TLS profile. TLS profiles are managed + using the gNSI Certz service or other certificate management service + provided by the system."; + reference + "https://github.com/openconfig/gnsi/tree/main/certz"; + } } grouping logging-remote-state { From 27eabe3b8e8a59c97da1e3af2dbc219fdd7e17c4 Mon Sep 17 00:00:00 2001 From: SydneyCaulfeild <47483016+SydneyCaulfeild@users.noreply.github.com> Date: Fri, 13 Sep 2024 13:41:58 -0400 Subject: [PATCH 365/372] Update description of the model-name leaf. (#1160) * Indicate model-name is mandatory if component is removable or oc-platform-type:CHASSIS --- .../platform/openconfig-platform-common.yang | 8 +++++++- release/models/platform/openconfig-platform.yang | 16 ++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 04f58b3ac..da46ed60b 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.27.0"; + oc-ext:openconfig-version "0.28.0"; + + revision "2024-08-08" { + description + "Update description of model-name leaf."; + reference "0.28.0"; + } revision "2024-05-29" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 89ebb559b..3ddb6cef4 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.27.0"; + oc-ext:openconfig-version "0.28.0"; + + revision "2024-08-08" { + description + "Update description of model-name leaf."; + reference "0.28.0"; + } revision "2024-05-29" { description @@ -540,11 +546,13 @@ module openconfig-platform { } leaf model-name { + when "../removable = 'true' or ../type = 'oc-platform-types:CHASSIS'"; + mandatory true; type string; description - "A human readable string describing the model of a component. - This string is optional and should only be populated if part-no - is also populated."; + "Model name that would be found in a catalog of stock keeping + units (SKU) and should be the orderable name of the + component."; } leaf clei-code { From 21fa1c99bf4148806c7b8c9daee54beaaece4f68 Mon Sep 17 00:00:00 2001 From: Ebben Aries Date: Fri, 13 Sep 2024 12:34:57 -0600 Subject: [PATCH 366/372] Deprecate /components/component/state/id leaf (#1107) * (M) release/models/platform/openconfig-platform.yang * (M) release/models/platform/openconfig-platform-common.yang - Deprecation of undefined/duplicate 'id' leaf --- release/models/platform/openconfig-platform-common.yang | 8 +++++++- release/models/platform/openconfig-platform.yang | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index da46ed60b..79514ea73 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.28.0"; + oc-ext:openconfig-version "0.29.0"; + + revision "2024-10-13" { + description + "Deprecate component id leaf"; + reference "0.29.0"; + } revision "2024-08-08" { description diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 3ddb6cef4..3850f2e78 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.28.0"; + oc-ext:openconfig-version "0.29.0"; + + revision "2024-10-13" { + description + "Deprecate component id leaf"; + reference "0.29.0"; + } revision "2024-08-08" { description @@ -423,6 +429,7 @@ module openconfig-platform { leaf id { type string; + status deprecated; description "Unique identifier assigned by the system for the component"; From bab19fd0acb5bd97aadca872d213f22ccc715b07 Mon Sep 17 00:00:00 2001 From: sallylsy <108024270+sallylsy@users.noreply.github.com> Date: Fri, 13 Sep 2024 13:32:26 -0700 Subject: [PATCH 367/372] Add fallback leaf for LACP in OC model (#1176) * Add fallback leaf for LACP in OC model --- release/models/lacp/openconfig-lacp.yang | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/release/models/lacp/openconfig-lacp.yang b/release/models/lacp/openconfig-lacp.yang index 832a6a178..f69f15f71 100644 --- a/release/models/lacp/openconfig-lacp.yang +++ b/release/models/lacp/openconfig-lacp.yang @@ -26,7 +26,13 @@ module openconfig-lacp { managing aggregate interfaces. It works in conjunction with the OpenConfig interfaces and aggregate interfaces models."; - oc-ext:openconfig-version "2.0.0"; + oc-ext:openconfig-version "2.1.0"; + + revision "2024-09-24" { + description + "Add LACP fallback leaf under both config and state."; + reference "2.1.0"; + } revision "2023-12-11" { description @@ -407,6 +413,15 @@ grouping aggregation-lacp-members-statistics { system-id"; } + leaf fallback { + type boolean; + description + "If the fallback is set to true, current LACP interface is + able to establish a Link Aggregation (LAG) before it receives + LACP PDUs from its peer, and fallback to a single port active + after the expiry of the timeout period."; + } + uses aggregation-lacp-global-config; } From 9b0a82ee10b6a598d124250f4df51a927c5916a9 Mon Sep 17 00:00:00 2001 From: Ryan Shea <115602+sourcequench@users.noreply.github.com> Date: Fri, 13 Sep 2024 16:34:00 -0400 Subject: [PATCH 368/372] Adding glome key version and console state. (#1178) * Adding GLOME capabilities to gnsi credentialz. --- .../gnsi/openconfig-gnsi-credentialz.yang | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/release/models/gnsi/openconfig-gnsi-credentialz.yang b/release/models/gnsi/openconfig-gnsi-credentialz.yang index 0e4392a7a..cf611fd9c 100644 --- a/release/models/gnsi/openconfig-gnsi-credentialz.yang +++ b/release/models/gnsi/openconfig-gnsi-credentialz.yang @@ -39,7 +39,13 @@ module openconfig-gnsi-credentialz { /system/aaa/authentication/users/user/config/password-hashed /system/aaa/authentication/users/user/state/password-hashed"; - oc-ext:openconfig-version "0.6.0"; + oc-ext:openconfig-version "0.7.0"; + + revision 2024-09-10 { + description + "Adding GLOME capabilities."; + reference "0.7.0"; + } revision 2024-02-13 { description @@ -142,6 +148,26 @@ module openconfig-gnsi-credentialz { } } + // GLOME related definitions. + + grouping glome-key-version { + description + "Version identifier for the configured GLOME key."; + + leaf active-glome-key-version { + type version; + description + "The version of the GLOME key."; + } + + leaf active-glome-key-created-on { + type created-on; + description + "The timestamp of the moment when the GLOME key + was created."; + } + } + // Success/failure counters. grouping counters { description @@ -232,9 +258,16 @@ module openconfig-gnsi-credentialz { "Console-related state."; uses counters; + + leaf enabled { + type boolean; + description + "Whether GLOME is enabled or not."; + } } } } + // System role console related definitions. grouping user-console-credentials-version { From 16df0a6c331f6d22f101821ce943c90c14de819b Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 24 Sep 2024 10:26:50 -0700 Subject: [PATCH 369/372] Fix typo in AES_128_CMAC_96 Keychain identify (#1172) * Fix typo in AES_128_CMAC_96 Keychain identify --- .../keychain/openconfig-keychain-types.yang | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/release/models/keychain/openconfig-keychain-types.yang b/release/models/keychain/openconfig-keychain-types.yang index c923f9ea1..3a49c6857 100644 --- a/release/models/keychain/openconfig-keychain-types.yang +++ b/release/models/keychain/openconfig-keychain-types.yang @@ -21,7 +21,13 @@ module openconfig-keychain-types { "This module contains general data definitions for use in keychain-based authentication."; - oc-ext:openconfig-version "0.3.0"; + oc-ext:openconfig-version "0.3.1"; + + revision "2024-08-27" { + description + "fix typo on AES_128_CMAC"; + reference "0.3.1"; + } revision "2024-08-27" { description @@ -29,6 +35,12 @@ module openconfig-keychain-types { reference "0.3.0"; } + revision "2024-08-27" { + description + "Fix typo in identity AES_128_CMAC_96"; + reference "0.2.1"; + } + revision "2022-03-01" { description "Remove NONE identity from AUTH_TYPE"; @@ -135,7 +147,7 @@ module openconfig-keychain-types { HMAC and HKDF)"; } - identity AES_28_CMAC_96 { + identity AES_128_CMAC_96 { base CRYPTO_TYPE; description "AES-128-CMAC-96 keyed hash function based on a AES-128 block From 03f1c1fe582aeabbae67e80f74e099507a3e2343 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 24 Sep 2024 12:02:34 -0700 Subject: [PATCH 370/372] Add mount-point type (#1168) * add mount-point type --- release/models/system/openconfig-system.yang | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/release/models/system/openconfig-system.yang b/release/models/system/openconfig-system.yang index 8534a909f..a7eb1be7f 100644 --- a/release/models/system/openconfig-system.yang +++ b/release/models/system/openconfig-system.yang @@ -47,7 +47,13 @@ module openconfig-system { Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info)."; - oc-ext:openconfig-version "2.2.0"; + oc-ext:openconfig-version "2.3.0"; + + revision "2024-09-24" { + description + "Added mount-point type leaf to describe the type of file system."; + reference "2.3.0"; + } revision "2024-08-13" { description @@ -420,6 +426,14 @@ module openconfig-system { description "The amount of space currently in use on the filesystem."; } + + leaf type { + type string; + description + "A human readable string indicating the filesystem type used + for storage. Examples might include flash, hard disk, tmpfs/ramdisk + or remote/network based storage."; + } } grouping system-global-state { From 960cfd9366d78c8ab61facf2655dfc3e7f4169f1 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 24 Sep 2024 12:14:21 -0700 Subject: [PATCH 371/372] Add storage counters related to errors (#1091) Add /components/component/storage/state/counters/ as a container to represent storage device counters --- release/models/platform/.spec.yml | 2 + .../platform/openconfig-platform-common.yang | 8 +- .../platform/openconfig-platform-storage.yang | 164 ++++++++++++++++++ .../models/platform/openconfig-platform.yang | 14 +- 4 files changed, 182 insertions(+), 6 deletions(-) create mode 100644 release/models/platform/openconfig-platform-storage.yang diff --git a/release/models/platform/.spec.yml b/release/models/platform/.spec.yml index 59ffb1c76..8dfd9472c 100644 --- a/release/models/platform/.spec.yml +++ b/release/models/platform/.spec.yml @@ -11,6 +11,7 @@ - yang/platform/openconfig-platform-cpu.yang - yang/platform/openconfig-platform-ext.yang - yang/platform/openconfig-platform-software.yang + - yang/platform/openconfig-platform-storage.yang - yang/platform/openconfig-platform-fabric.yang - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang @@ -31,6 +32,7 @@ - yang/platform/openconfig-platform-ext.yang - yang/platform/openconfig-platform-cpu.yang - yang/platform/openconfig-platform-software.yang + - yang/platform/openconfig-platform-storage.yang - yang/platform/openconfig-platform-fabric.yang - yang/platform/openconfig-platform-pipeline-counters.yang - yang/platform/openconfig-platform-integrated-circuit.yang diff --git a/release/models/platform/openconfig-platform-common.yang b/release/models/platform/openconfig-platform-common.yang index 79514ea73..b0fcb1757 100644 --- a/release/models/platform/openconfig-platform-common.yang +++ b/release/models/platform/openconfig-platform-common.yang @@ -20,7 +20,13 @@ submodule openconfig-platform-common { "This modules contains common groupings that are used in multiple components within the platform module."; - oc-ext:openconfig-version "0.29.0"; + oc-ext:openconfig-version "0.30.0"; + + revision "2024-10-13" { + description + "Add storage state io-errors."; + reference "0.30.0"; + } revision "2024-10-13" { description diff --git a/release/models/platform/openconfig-platform-storage.yang b/release/models/platform/openconfig-platform-storage.yang new file mode 100644 index 000000000..230d03e07 --- /dev/null +++ b/release/models/platform/openconfig-platform-storage.yang @@ -0,0 +1,164 @@ +module openconfig-platform-storage { + +yang-version "1"; + +// namespace +namespace "http://openconfig.net/yang/platform/storage"; + +prefix "oc-storage"; + +import openconfig-platform { + prefix oc-platform; +} +import openconfig-extensions { + prefix oc-ext; +} +import openconfig-yang-types { + prefix oc-yang; +} + +// meta +organization + "OpenConfig working group"; + +contact + "OpenConfig working group + www.openconfig.net"; + +description + "This module defines data related to STORAGE components in the + OpenConfig platform model. + + Portions of this code were derived from the following copyright holders. + References to each copyright holder are mentioned where related content + is used. + + NVM Express Base Specification Revision 2.0a + https://nvmexpress.org/wp-content/uploads/NVMe-NVM-Express-2.0a-2021.07.26-Ratified.pdf + (c) Copyright 2007 to 2021 NVM Express, Inc. ALL RIGHTS RESERVED. + This NVM Express Base Specification, revision 2.0a is proprietary to the + NVM Express, Inc. (also referred to as “Company”) and/or its successors + and assigns. + + S.M.A.R.T. Attribute: Reallocated Sectors Count | Knowledge Base + http://kb.acronis.com."; + +oc-ext:openconfig-version "0.1.0"; + +revision "2024-08-26" { + description + "Initial revision."; + reference + "0.1.0"; +} + +// OpenConfig specific extensions for module metadata. +oc-ext:regexp-posix; +oc-ext:catalog-organization "openconfig"; +oc-ext:origin "openconfig"; + +// identity statements +// typedef statements +// grouping statements + grouping storage-counters-state { + description + "Operational state for storage component statistics. These leaves + are derived from a list of commonly supported S.M.A.R.T. counters. + Note that while common, these attributes may not be supported by + all storage device vendors and media types."; + + leaf soft-read-error-rate { + type oc-yang:counter64; + description + "Uncorrected read errors reported to the operating system. SMART ID + 201."; + reference + "S.M.A.R.T. Attribute: Soft Read Error Rate / Off Track Errors (Maxtor) + | Knowledge Base. kb.acronis.com."; + } + + leaf reallocated-sectors { + type oc-yang:counter64; + description + "Count of reallocated sectors. The raw value represents a count of + the bad sectors that have been found and remapped. SMART ID 5."; + reference + "S.M.A.R.T. Attribute: Reallocated Sectors Count | Knowledge Base - + kb.acronis.com"; + } + + leaf end-to-end-error { + type oc-yang:counter64; + description + "Count of parity errors which occur in the data path to the media. + SMART ID 184."; + reference + "Acronis Drive Monitor: Disk Health Calculation Knowledge Base - + kb.acronis.com"; + } + + leaf offline-uncorrectable-sectors-count { + type oc-yang:counter64; + description + "The total count of uncorrectable errors when reading/writing a + sector. SMART ID 198."; + reference + "Acronis Drive Monitor: Disk Health Calculation Knowledge Base - + kb.acronis.com"; + } + + leaf life-left { + type uint8; + description + "Indicates the approximate SSD life left, in terms of program/erase + cycles or available reserved blocks. A normalized value of 100 + represents a new drive, with a threshold value at 10 indicating a need + for replacement. A value of 0 may mean that the drive is operating in + read-only mode to allow data recovery. SMART ID 231."; + reference + "SMART attribute details, + https://media.kingston.com/support/downloads/MKP_306_SMART_attribute.pdf"; + } + + leaf percentage-used { + type uint8; + description + "Contains a vendor specific estimate of the percentage of NVM + subsystem life used based on the actual usage and the manufacturer’s + prediction of NVM life. A value of 100 indicates that the estimated + endurance of the NVM in the NVM subsystem has been consumed, but may + not indicate an NVM subsystem failure. The value is allowed to exceed + 100. Percentages greater than 254 shall be represented as 255."; + reference + "NVM Express Base Specification Revision 2.0a + https://nvmexpress.org/wp-content/uploads/NVMe-NVM-Express-2.0a-2021.07.26-Ratified.pdf"; + } + } + grouping storage-state { + description + "Storage component state. These counters are derived from the + linux kernel block layer statistics in /sys/block//stat. + Implementations which do not use the linux kernel to access + storage should provide equivalent counters."; + reference + "https://www.kernel.org/doc/Documentation/block/stat.txt"; + + container counters { + description + "A collection of storage specific statistics entitites."; + + uses storage-counters-state; + } + } + + // data definition statements + // augment statements + augment "/oc-platform:components/oc-platform:component/" + + "oc-platform:storage/oc-platform:state" { + description + "Adding storage data to component model"; + + uses storage-state; + } +} + diff --git a/release/models/platform/openconfig-platform.yang b/release/models/platform/openconfig-platform.yang index 3850f2e78..742c3e8af 100644 --- a/release/models/platform/openconfig-platform.yang +++ b/release/models/platform/openconfig-platform.yang @@ -65,7 +65,13 @@ module openconfig-platform { (presence or absence of a component) and state (physical attributes or status)."; - oc-ext:openconfig-version "0.29.0"; + oc-ext:openconfig-version "0.30.0"; + + revision "2024-10-13" { + description + "Add storage state io-errors."; + reference "0.30.0"; + } revision "2024-10-13" { description @@ -94,13 +100,11 @@ module openconfig-platform { revision "2024-01-30" { description - "Add rules for controller-card power-off - Also introduces last-poweroff-reason container - and last-poweroff-time leaf"; + "Updated description for component-power-type"; reference "0.25.0"; } - revision "2023-11-28" { + revision "2023-11-28" { description "Add model-name"; reference "0.24.0"; From 4513c1485047292dd04339ffc6f5bbf42b1c84b9 Mon Sep 17 00:00:00 2001 From: Darren Loher Date: Tue, 24 Sep 2024 12:27:54 -0700 Subject: [PATCH 372/372] Restore NONE as an enum value for typedef community-type (#1177) * restore NONE as an enum value for typedef community-type --- .../bgp/openconfig-bgp-common-multiprotocol.yang | 8 +++++++- .../bgp/openconfig-bgp-common-structure.yang | 8 +++++++- release/models/bgp/openconfig-bgp-common.yang | 15 +++++++++++---- release/models/bgp/openconfig-bgp-errors.yang | 8 +++++++- release/models/bgp/openconfig-bgp-global.yang | 8 +++++++- release/models/bgp/openconfig-bgp-neighbor.yang | 8 +++++++- release/models/bgp/openconfig-bgp-peer-group.yang | 8 +++++++- release/models/bgp/openconfig-bgp-types.yang | 14 +++++++++----- release/models/bgp/openconfig-bgp.yang | 8 +++++++- 9 files changed, 69 insertions(+), 16 deletions(-) diff --git a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang index 705019c01..884bbe8be 100644 --- a/release/models/bgp/openconfig-bgp-common-multiprotocol.yang +++ b/release/models/bgp/openconfig-bgp-common-multiprotocol.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common-multiprotocol { for multiple protocols in BGP. The groupings are common across multiple contexts."; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-common-structure.yang b/release/models/bgp/openconfig-bgp-common-structure.yang index e737d9d13..8aee8797b 100644 --- a/release/models/bgp/openconfig-bgp-common-structure.yang +++ b/release/models/bgp/openconfig-bgp-common-structure.yang @@ -21,7 +21,13 @@ submodule openconfig-bgp-common-structure { "This sub-module contains groupings that are common across multiple BGP contexts and provide structure around other primitive groupings."; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-common.yang b/release/models/bgp/openconfig-bgp-common.yang index fe3f82477..ac1a3983f 100644 --- a/release/models/bgp/openconfig-bgp-common.yang +++ b/release/models/bgp/openconfig-bgp-common.yang @@ -24,7 +24,13 @@ submodule openconfig-bgp-common { may be application to a subset of global, peer-group or neighbor contexts."; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description @@ -326,9 +332,10 @@ submodule openconfig-bgp-common { leaf-list send-community-type { type oc-bgp-types:community-type; description - "Specify which types of community should be sent to the - neighbor or group. The default is to not send the - community attribute"; + "Specify which types of community should be sent to the neighbor or + group. The default is to not send the community attribute. Note, if + the NONE community-type is specified, no other types must be + specified."; } leaf description { diff --git a/release/models/bgp/openconfig-bgp-errors.yang b/release/models/bgp/openconfig-bgp-errors.yang index 662395606..53372afc7 100644 --- a/release/models/bgp/openconfig-bgp-errors.yang +++ b/release/models/bgp/openconfig-bgp-errors.yang @@ -18,7 +18,13 @@ submodule openconfig-bgp-errors { "This module defines BGP NOTIFICATION message error codes and subcodes"; - oc-ext:openconfig-version "6.0.0"; + oc-ext:openconfig-version "6.1.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "6.1.0"; + } revision "2024-01-31" { description diff --git a/release/models/bgp/openconfig-bgp-global.yang b/release/models/bgp/openconfig-bgp-global.yang index 28e73bac5..9a1480182 100644 --- a/release/models/bgp/openconfig-bgp-global.yang +++ b/release/models/bgp/openconfig-bgp-global.yang @@ -27,7 +27,13 @@ submodule openconfig-bgp-global { "This sub-module contains groupings that are specific to the global context of the OpenConfig BGP module"; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-neighbor.yang b/release/models/bgp/openconfig-bgp-neighbor.yang index 3087ae03c..ddcef2e8b 100644 --- a/release/models/bgp/openconfig-bgp-neighbor.yang +++ b/release/models/bgp/openconfig-bgp-neighbor.yang @@ -30,7 +30,13 @@ submodule openconfig-bgp-neighbor { "This sub-module contains groupings that are specific to the neighbor context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-peer-group.yang b/release/models/bgp/openconfig-bgp-peer-group.yang index 9091e68e1..aba5163ac 100644 --- a/release/models/bgp/openconfig-bgp-peer-group.yang +++ b/release/models/bgp/openconfig-bgp-peer-group.yang @@ -25,7 +25,13 @@ submodule openconfig-bgp-peer-group { "This sub-module contains groupings that are specific to the peer-group context of the OpenConfig BGP module."; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description diff --git a/release/models/bgp/openconfig-bgp-types.yang b/release/models/bgp/openconfig-bgp-types.yang index 2a9298a6a..57b8e9b65 100644 --- a/release/models/bgp/openconfig-bgp-types.yang +++ b/release/models/bgp/openconfig-bgp-types.yang @@ -24,7 +24,13 @@ module openconfig-bgp-types { policy. It can be imported by modules that make use of BGP attributes"; - oc-ext:openconfig-version "6.0.0"; + oc-ext:openconfig-version "6.1.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "6.1.0"; + } revision "2024-02-01" { description @@ -795,10 +801,8 @@ module openconfig-bgp-types { } enum NONE { description - "Do not send any community attribute. - This value has been deprecated because the node is now - a leaf-list."; - status deprecated; + "Do not send any community attribute. If this value is present + then the other community-types must not be present."; } } description diff --git a/release/models/bgp/openconfig-bgp.yang b/release/models/bgp/openconfig-bgp.yang index de65238c9..054f3cdd9 100644 --- a/release/models/bgp/openconfig-bgp.yang +++ b/release/models/bgp/openconfig-bgp.yang @@ -68,7 +68,13 @@ module openconfig-bgp { whereas leaf not present inherits its value from the leaf present at the next higher level in the hierarchy."; - oc-ext:openconfig-version "9.7.1"; + oc-ext:openconfig-version "9.8.0"; + + revision "2024-09-06" { + description + "Restore NONE enum value for community-type."; + reference "9.8.0"; + } revision "2023-12-28" { description