- Revision
- Overview
- Requirements
- Architecture Design
- High-Level Design
- SAI API
- Configuration and management
- Restrictions/Limitations
- Testing Requirements/Design
Rev | Date | Author | Change Description |
---|---|---|---|
1.0 | 11-Jan-2024 | Harsis Yadav, Pandurangan R S, Vivek Kumar Verma (Arista Networks) | Initial public version |
In a distributed VOQ architecture corresponding to each output VOQ present on an ASIC, there are VOQs present on every ASIC in the system. Each ASIC has its own set of VOQ stats maintained in the FSI which needs to be gathered independently and can be hard to visualize, providing a non-cohesive experience.
Provide aggregate VOQ counters in a distributed VOQ architecture.
No new architecture changes are required to SONiC. An instance of SWSS runs for each ASIC on it's respective FSI instance, in a distributed VOQ architecture. SWSS can be used to poll VOQ stats for every ASIC and update CHASSIS_APP_DB which is accessible from every FSI module.
Figure 1: Gathering the VOQ stats in CHASSIS_APP_DB
Figure 2: Aggregation of VOQ stats
The following new VOQ counters should be available for each VOQ entry in the DB:
COUNTERS|fsi_id|asic_id|intf@fsi_id|asic_id:VOQ_index
SAI_VOQ_STAT_PACKETS
SAI_VOQ_STAT_BYTES
SAI_VOQ_STAT_DROPPED_PACKETS
SAI_VOQ_STAT_DROPPED_BYTES
- The first part of the key ( before @ )
fsi_id|asic_id|intf
denotes the physical location of the interface. - The second part of the key ( after @ )
fsi_id|asic_id:VOQ_index
denotes the location of the VOQ and its index.
PortsOrch will periodically poll the VOQ stats through SAI call get_queue_stats
and update them into CHASSIS_APP_DB
- sonic-swss-common: sonic-net/sonic-swss-common#855
- sonic-swss: sonic-net/sonic-swss#3047
- sonic-utilities: sonic-net/sonic-utilities#3163
- sonic-mgmt
No new SAI API is being added. PortsOrch will use the existing SAI API i.e. get_queue_stats
.
CLI (queuestat.py) aggregates the VOQ stats for a VOQ across ASICS and present a consolidated view. No new CLI command is being introduced for this rather the following CLI command is leveraged to provide this output on an SSI.
$ show VOQ counters [interface] --voq
admin@nfc404:~$ show queue counters "nfc404-3|Asic0|Ethernet4" --voq
Port Voq Counter/pkts Counter/bytes Drop/pkts Drop/bytes
------------------------ ----- -------------- --------------- ----------- ------------
nfc404-3|Asic0|Ethernet4 VOQ0 45 12386 0 0
nfc404-3|Asic0|Ethernet4 VOQ1 1 50 0 0
nfc404-3|Asic0|Ethernet4 VOQ2 255 12750 0 0
nfc404-3|Asic0|Ethernet4 VOQ3 0 0 0 0
nfc404-3|Asic0|Ethernet4 VOQ4 37 1850 0 0
nfc404-3|Asic0|Ethernet4 VOQ5 0 0 0 0
nfc404-3|Asic0|Ethernet4 VOQ6 172 8600 0 0
nfc404-3|Asic0|Ethernet4 VOQ7 0 0 0 0
- Since this feature doesn't use flex counter, the polling interval is not configurable.
- The polling can't be disabled permanently as well.
Send traffic across different ASICs and ensure aggregate counters are correctly displayed.