Skip to content

Commit

Permalink
Merge branch 'openconfig:master' into afi-safi-send-community
Browse files Browse the repository at this point in the history
  • Loading branch information
missaesasaya authored Dec 29, 2023
2 parents 1191717 + af9d6b6 commit 841a722
Show file tree
Hide file tree
Showing 12 changed files with 408 additions and 74 deletions.
72 changes: 72 additions & 0 deletions doc/Integrated-Circuit_pipeline_aggregated_counters_guide.md
Original file line number Diff line number Diff line change
@@ -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
132 changes: 129 additions & 3 deletions release/models/bgp/openconfig-bgp-policy.yang
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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/" +
Expand All @@ -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/" +
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.";
Expand Down Expand Up @@ -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";
Expand Down
25 changes: 19 additions & 6 deletions release/models/interfaces/openconfig-interfaces.yang
Original file line number Diff line number Diff line change
Expand Up @@ -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.";
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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 {
Expand Down
24 changes: 13 additions & 11 deletions release/models/isis/openconfig-isis-policy.yang
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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";
}
}

Expand Down Expand Up @@ -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 {
Expand Down
Loading

0 comments on commit 841a722

Please sign in to comment.