|
| 1 | +# Configurable Drop Counters in SONiC |
| 2 | + |
| 3 | +# High Level Design Document |
| 4 | +#### Rev 1.1 |
| 5 | + |
| 6 | +## Overview |
| 7 | + |
| 8 | +The main goal of this feature is to provide better packet drop visibility in SONiC by providing a mechanism to count and classify packet drops that occur due to different reasons. |
| 9 | + |
| 10 | +## 1 Top-level requirements |
| 11 | + |
| 12 | +- This feature is enhancements/hardening of exisiting drop counter feature in SONiC |
| 13 | +https://github.com/Azure/SONiC/blob/master/doc/drop_counters/drop_counters_HLD.md |
| 14 | +- Add support for more drop counters to SAI. |
| 15 | +- Klish support for drop counters feature in SONiC. |
| 16 | +- Mirror the possible drop frames to CPU for analysis. |
| 17 | + |
| 18 | +# 2 Requirements |
| 19 | + |
| 20 | +## 2.1 Functional Requirements |
| 21 | +1. CONFIG_DB can be configured to create debug counters |
| 22 | +2. STATE_DB can be queried for debug counter capabilities |
| 23 | +3. Users can access drop counter information via a Klish, GNMI, Rest interfaces. |
| 24 | + 1. Users can see what capabilities are available to them |
| 25 | + 1. Types of counters (i.e. port-level and/or switch-level) |
| 26 | + 2. Number of counters |
| 27 | + 3. Supported drop reasons |
| 28 | + 2. Users can see what types of drops each configured counter contains |
| 29 | + 3. Users can see which drop frames can be mirrored. |
| 30 | + 4. Users can add and remove drop reasons from each counter |
| 31 | + 5. Users can read the current value of each counter |
| 32 | + 6. Users can assign aliases to counters |
| 33 | + 7. Users can clear counters |
| 34 | + 8. Users can capture mirrored dropped frames. |
| 35 | + |
| 36 | +## 2.2 Configuration and Management Requirements |
| 37 | +Configuration of the drop counters can be done via: |
| 38 | +* config_db.json |
| 39 | +* CLI |
| 40 | + |
| 41 | +## 2.3 Scalability Requirements |
| 42 | +Users must be able to use all debug counters and drop reasons provided by the underlying hardware. |
| 43 | + |
| 44 | +Interacting with debug counters will not interfere with existing hardware counters (e.g. portstat). Likewise, interacting with existing hardware counters will not interfere with debug counter behavior. |
| 45 | + |
| 46 | +## 2.4 Supported Debug Counters |
| 47 | +* PORT_INGRESS_DROPS: port-level ingress drop counters |
| 48 | +* PORT_EGRESS_DROPS: port-level egress drop counters |
| 49 | +* SWITCH_INGRESS_DROPS: switch-level ingress drop counters |
| 50 | +* SWITCH_EGRESS_DROPS: switch-level egress drop counters |
0 commit comments