Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add v2r mapping for Fabric Counters in VoQ Chassis #341

Merged
merged 23 commits into from
Feb 10, 2025

Conversation

SuvarnaMeenakshi
Copy link
Contributor

@SuvarnaMeenakshi SuvarnaMeenakshi commented Jan 21, 2025

Why I did it

  1. In order to retrieve Fabric Counters using Streaming telemetry, the COUNTERS_FABRIC_PORT_NAME_MAP table in COUNTERS_DB has to be queried first to get PORT name to OID mapping, then COUNTERS:oid:<> table in COUNTERS_DB has to be queried to get the Fabric Counters.
    To make the retrieval easy, changes are made in this PR to add v2r mapping for Fabric Counters in Packet Chassis similar to Ethernet interface counters. Reference [multi-asic] Added Support for multi-asic for telemetry/gnmi server sonic-telemetry#77
    2 The Fabric counters Port name is unique within a given asic namespace and is not unique across a linecard. For example, there will be a port named PORT0 in asic0 and PORT0 in asic1 namespace as well. In order to make this unique across a multi-asic linecard, this PR appends asic namespace in the interface name. For example, PORT0 in asic0 will be called "PORT0-asic0".

How I did it

  1. Add v2r mapping support to read all ports from COUNTERS_FABRIC_PORT_NAME_MAP so that Streaming telemetry can query using Fabric port name and COUNTERS_DB.
  2. Modify the Fabric Port name by appending Asic namespace.
  3. Add unit-test
  4. Modify clean up and set up multi namespace to reset countersFabricPortNameMap so that the port map is re-initialized when changing from single to multi- namespace in unit-test

How to verify it

Verified on a multi-asic linecard:

gnmi_get -target_addr localhost:50051 -xpath COUNTERS/PORT0-asic0 -xpath_target COUNTERS_DB -insecure            
== getRequest:
prefix: <
  target: "COUNTERS_DB"
>
path: <
  elem: <
    name: "COUNTERS"
  >
  elem: <
    name: "PORT0-asic0"
  >
>
encoding: JSON_IETF

== getResponse:
notification: <
  timestamp: 1737484675266818454
  prefix: <
    target: "COUNTERS_DB"
  >
  update: <
    path: <
      elem: <
        name: "COUNTERS"
      >
      elem: <
        name: "PORT0-asic0"
      >
    >
    val: <
      json_ietf_val: "{\"SAI_PORT_STAT_IF_IN_ERRORS\":\"0\",\"SAI_PORT_STAT_IF_IN_FABRIC_DATA_UNITS\":\"0\",\"SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES\":\"0\",\"SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES\":\"0\",\"SAI_PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS\":\"0\",\"SAI_PORT_STAT_IF_IN_OCTETS\":\"0\",\"SAI_PORT_STAT_IF_OUT_FABRIC_DATA_UNITS\":\"0\",\"SAI_PORT_STAT_IF_OUT_OCTETS\":\"0\"}"
    >
  >
>

Verified on single asic Linecard:

gnmi_get -target_addr localhost:50051 -xpath COUNTERS/PORT0   -xpath_target COUNTERS_DB -insecure 
== getRequest:
prefix: <
  target: "COUNTERS_DB"
>
path: <
  elem: <
    name: "COUNTERS"
  >
  elem: <
    name: "PORT0"
  >
>
encoding: JSON_IETF

== getResponse:
notification: <
  timestamp: 1737567049704926166
  prefix: <
    target: "COUNTERS_DB"
  >
  update: <
    path: <
      elem: <
        name: "COUNTERS"
      >
      elem: <
        name: "PORT0"
      >
    >
    val: <
      json_ietf_val: "{\"SAI_PORT_STAT_IF_IN_ERRORS\":\"0\",\"SAI_PORT_STAT_IF_IN_FABRIC_DATA_UNITS\":\"181562945\",\"SAI_PORT_STAT_IF_IN_FEC_CORRECTABLE_FRAMES\":\"0\",\"SAI_PORT_STAT_IF_IN_FEC_NOT_CORRECTABLE_FRAMES\":\"0\",\"SAI_PORT_STAT_IF_IN_FEC_SYMBOL_ERRORS\":\"0\",\"SAI_PORT_STAT_IF_IN_OCTETS\":\"40499614075\",\"SAI_PORT_STAT_IF_OUT_FABRIC_DATA_UNITS\":\"11152\",\"SAI_PORT_STAT_IF_OUT_OCTETS\":\"2588370\"}"
    >
  >
>

gnmi_get -target_addr localhost:50051 -xpath COUNTERS/PORT*   -xpath_target COUNTERS_DB -insecure

Verified on Pizza box to ensure no error log is seen.

Which release branch to backport (provide reason below if selected)

  • 201811
  • 201911
  • 202006
  • 202012
  • 202106
  • 202111

Description for the changelog

Link to config_db schema for YANG module changes

A picture of a cute animal (not mandatory but encouraged)

@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

var namespace_str = ""
if len(namespace) != 0 {
namespace_str = string('-') + namespace
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we add some comment what are we doing here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

added comments

Signed-off-by: Suvarna Meenakshi <[email protected]>
@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

This reverts commit e90e6cd.
Signed-off-by: Suvarna Meenakshi <[email protected]>
@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

Signed-off-by: Suvarna Meenakshi <[email protected]>
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

abdosi
abdosi previously approved these changes Jan 31, 2025
Copy link
Contributor

@abdosi abdosi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

fabric counters if invoked during unit testing

Signed-off-by: Suvarna Meenakshi <[email protected]>
@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@SuvarnaMeenakshi
Copy link
Contributor Author

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

abdosi
abdosi previously approved these changes Feb 6, 2025
Signed-off-by: Suvarna Meenakshi <[email protected]>
@mssonicbld
Copy link

/azp run

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@rlhui
Copy link
Contributor

rlhui commented Feb 8, 2025

this is not for packet chassis right?

@SuvarnaMeenakshi SuvarnaMeenakshi changed the title Add v2r mapping for Fabric Counters in Packet Chassis Add v2r mapping for Fabric Counters in VoQ Chassis Feb 10, 2025
@SuvarnaMeenakshi
Copy link
Contributor Author

this is not for packet chassis right?

yes, it is only for VoQ chassis, corrected the title to reflect the same

Copy link
Contributor

@zbud-msft zbud-msft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed with @SuvarnaMeenakshi, sonic-mgmt testcase will be added as follow-up

@SuvarnaMeenakshi SuvarnaMeenakshi merged commit 22f767f into sonic-net:master Feb 10, 2025
5 checks passed
@rlhui
Copy link
Contributor

rlhui commented Feb 12, 2025

@SuvarnaMeenakshi , we'll need this for 202411 as well. Thanks.

@mssonicbld
Copy link

Cherry-pick PR to 202411: #365

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

6 participants