Fair bandwidth-distribution algorithm

Hardware-assisted HQoS introduces a new way to implement queue-weight based bandwidth distribution.

The queue hardware-enforced FIR rate is used to provide weighted fair access between queues assigned to the same hardware scheduling priority (scheduling class) within a hardware aggregate shaper, by dynamically changing the queue's hardware scheduling priority as shown in Figure: Hardware FIR enforcement for dynamic fairness control.

Figure: Hardware FIR enforcement for dynamic fairness control

Every queue in a hardware aggregate shaper is described by the following parameters:

scheduling class
sets assignment to hardware priorities
aggregate shaper weight
sets the queue fair-share of bandwidth at the specific scheduling class level
burst limit
sets the individual queue burst limit at PIR
FIR burst limit
sets the individual queue burst limit at FIR

The aggregate shaper weight algorithm operates similarly to the virtual-scheduler HQoS algorithm, meaning that the offered load of the queues at the same scheduling class is weighted against the aggregate shaper weight to determine the FIR, which then controls hardware-based scheduling.

A FIR-based algorithm is more efficient and more responsive to dynamic changes in offered load. The PIR is not adjusted, which prevents aggregate-rate underruns in case of a sudden change in an incoming load for some queues.

When hardware aggregate shapers are enabled, CIR as a queue parameter has no impact on the BW allocation algorithm, as in traditional HQoS. The CIR is still used for calculation of the default CBS. The queue-frame-based-accounting setting is also ignored when hardware aggregate shaping is configured.

The following examples show a SAP egress policy configuration. Weight-based bandwidth distribution in this example is only between queue 1 and queue 2. These queues are both assigned to the same scheduling class (sched-class 3), while queue 3 has a higher priority scheduling-class (sched-class 5) and is served with strict priority.

Classic CLI example:

*A:SR-1s-test>config>qos>sap-egress# info
----------------------------------------------
            queue 1 create
                mbs 100 kilobytes
                burst-limit 500 bytes
                agg-shaper-weight 5
                sched-class 3
            exit
            queue 2 create
                mbs 100 kilobytes
                burst-limit 500 bytes
                agg-shaper-weight 15
                sched-class 3
            exit
            queue 3 create
                mbs 100 kilobytes
                burst-limit 500 bytes
                sched-class 5
            exit
            fc af create
                queue 2
            exit
            fc be create
                queue 1
            exit
            fc ef create
                queue 3
            exit
----------------------------------------------
*A:SR-1s-test>config>qos>sap-egress#

MD-CLI example:

[/configure qos]
A:admin@SR-1s# info
    sap-egress "trial-egr" {
        queue 1 {
            agg-shaper-weight 5
            burst-limit 500
            mbs 102400
            sched-class 3
        }
        queue 2 {
            agg-shaper-weight 15
            burst-limit 500
            mbs 102400
            sched-class 3
        }
        queue 3 {
            burst-limit 500
            mbs 102400
            sched-class 5
        }
        fc be {
            queue 1
        }
        fc af {
            queue 2
        }
        fc ef {
            queue 3
        }