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 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 diff --git a/cloudbuild.yaml b/cloudbuild.yaml index f746bf7c0..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 'v11.*' | sort -V | tail -1) + branch=$(git tag -l 'v13.*' | sort -V | tail -1) git checkout $branch volumes: - name: 'ssh' @@ -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' @@ -230,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' 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/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-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-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/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 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/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-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-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-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/" + 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 { 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/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 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 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/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 diff --git a/release/models/network-instance/.spec.yml b/release/models/network-instance/.spec.yml index 9874ec073..992b4a491 100644 --- a/release/models/network-instance/.spec.yml +++ b/release/models/network-instance/.spec.yml @@ -1,20 +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/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 - 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/network-instance/openconfig-route-summary.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 diff --git a/release/models/network-instance/openconfig-network-instance-l2.yang b/release/models/network-instance/openconfig-network-instance-l2.yang index 8e805e92a..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,32 @@ 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.2.2"; + + revision "2023-11-03" { + description + "Add reference URL for Route Redistribution rules"; + reference "4.2.2"; + } + + 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 + "Add L2RIB Per Producer Next-Hop Capability"; + reference "4.2.0"; + } + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "4.1.1"; + } revision "2023-07-12" { description @@ -539,6 +564,7 @@ submodule openconfig-network-instance-l2 { } } } + uses l2ni-l2rib-common-next-hop-group-state; uses l2ni-l2rib-common-next-hop-state; } @@ -600,6 +626,7 @@ submodule openconfig-network-instance-l2 { } } } + uses l2ni-l2rib-common-next-hop-group-state; uses l2ni-l2rib-common-next-hop-state; } } @@ -702,7 +729,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 { @@ -715,8 +745,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 { @@ -751,11 +789,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 418582fe1..ee5b5a740 100644 --- a/release/models/network-instance/openconfig-network-instance.yang +++ b/release/models/network-instance/openconfig-network-instance.yang @@ -48,7 +48,32 @@ 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.2.2"; + + revision "2023-11-03" { + description + "Add reference URL for Route Redistribution rules"; + reference "4.2.2"; + } + + 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 + "Add L2RIB Per Producer Next-Hop Capability"; + reference "4.2.0"; + } + + revision "2023-08-09" { + description + "Update interface key to use interface-id type"; + reference "4.1.1"; + } revision "2023-07-12" { description @@ -468,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"; @@ -1097,7 +1126,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"; @@ -1211,6 +1240,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/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."; - } - } -} diff --git a/release/models/ospf/openconfig-ospfv2-area-interface.yang b/release/models/ospf/openconfig-ospfv2-area-interface.yang index 52d560bad..3045ad03c 100644 --- a/release/models/ospf/openconfig-ospfv2-area-interface.yang +++ b/release/models/ospf/openconfig-ospfv2-area-interface.yang @@ -25,7 +25,26 @@ 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.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 + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description @@ -110,7 +129,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..e0f0020f8 100644 --- a/release/models/ospf/openconfig-ospfv2-area.yang +++ b/release/models/ospf/openconfig-ospfv2-area.yang @@ -23,7 +23,26 @@ 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.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 + "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..8bfd890b4 100644 --- a/release/models/ospf/openconfig-ospfv2-common.yang +++ b/release/models/ospf/openconfig-ospfv2-common.yang @@ -17,7 +17,26 @@ 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.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 + "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..e6c0256ec 100644 --- a/release/models/ospf/openconfig-ospfv2-global.yang +++ b/release/models/ospf/openconfig-ospfv2-global.yang @@ -23,7 +23,26 @@ 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.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 + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description @@ -305,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 5a39769fb..e1eda9fdd 100644 --- a/release/models/ospf/openconfig-ospfv2-lsdb.yang +++ b/release/models/ospf/openconfig-ospfv2-lsdb.yang @@ -22,7 +22,25 @@ 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.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 + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description @@ -1212,6 +1230,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 f75a207bd..fb5a7e031 100644 --- a/release/models/ospf/openconfig-ospfv2.yang +++ b/release/models/ospf/openconfig-ospfv2.yang @@ -34,7 +34,26 @@ 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.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 + "Update interface key to use interface-id type"; + reference "0.4.3"; + } revision "2023-07-05" { description 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 { 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 { diff --git a/release/models/policy/openconfig-routing-policy.yang b/release/models/policy/openconfig-routing-policy.yang index bf419b779..8a61d8be0 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 @@ -75,9 +80,34 @@ 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). + + 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.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 + "Clarify the use of default-(import|export)-policy when no policy + is applied to a protocol."; + reference "3.4.1"; + } - oc-ext:openconfig-version "3.3.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 +192,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"; @@ -1181,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; @@ -1189,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 { @@ -1211,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; @@ -1221,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. } @@ -1273,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; } diff --git a/release/models/qos/openconfig-qos-elements.yang b/release/models/qos/openconfig-qos-elements.yang index e679f6fe6..6aee18d72 100644 --- a/release/models/qos/openconfig-qos-elements.yang +++ b/release/models/qos/openconfig-qos-elements.yang @@ -35,7 +35,32 @@ submodule openconfig-qos-elements { packets for transmission, including policer and shaper functions"; - oc-ext:openconfig-version "0.9.1"; + oc-ext:openconfig-version "0.11.2"; + + 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"; + } + + 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"; + 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..c45c0974b 100644 --- a/release/models/qos/openconfig-qos-interfaces.yang +++ b/release/models/qos/openconfig-qos-interfaces.yang @@ -25,7 +25,32 @@ submodule openconfig-qos-interfaces { configuration and operational state associated with interfaces."; - oc-ext:openconfig-version "0.9.1"; + oc-ext:openconfig-version "0.11.2"; + + 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"; + } + + 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"; + reference "0.10.0"; + } revision "2023-04-25" { description @@ -362,13 +387,53 @@ 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"; + } + + 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"; } } diff --git a/release/models/qos/openconfig-qos-mem-mgmt.yang b/release/models/qos/openconfig-qos-mem-mgmt.yang index ef7b324f6..34c373d58 100644 --- a/release/models/qos/openconfig-qos-mem-mgmt.yang +++ b/release/models/qos/openconfig-qos-mem-mgmt.yang @@ -29,7 +29,32 @@ 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.11.2"; + + 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"; + } + + 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"; + reference "0.10.0"; + } revision "2023-04-25" { description @@ -221,7 +246,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 +284,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 { @@ -362,7 +415,10 @@ submodule openconfig-qos-mem-mgmt { 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 a01610cfe..9feb9b3ba 100644 --- a/release/models/qos/openconfig-qos.yang +++ b/release/models/qos/openconfig-qos.yang @@ -27,7 +27,32 @@ 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.11.2"; + + 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"; + } + + 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"; + reference "0.10.0"; + } revision "2023-04-25" { 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."; } 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 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 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