MDRR on the IOC Overview
The guaranteed rate CIR at the interface set level is implemented by using modified deficit round-robin (MDRR). The IOC hardware provides four levels of strict priority. There is no restriction on the number of queues for each priority. MDRR is used among queues of the same priority. Each queue has one priority when it is under the guaranteed rate and another priority when it is over the guaranteed rate but still under the shaping rate PIR. The IOC hardware implements the priorities with 256 service profiles. Each service profile assigns eight priorities for eight queues. One set is for logical interfaces under the guaranteed rate and another set is for logical interfaces over the guaranteed rate but under the shaping rate. Each service profile is associated with a group of 16 level 3 schedulers, so there is a unique service profile available for all 256 groups at level 3, giving 4,096 logical interfaces.
Junos OS provides three priorities for traffic under the guaranteed rate and one reserved priority for traffic over the guaranteed rate that is not configurable. Junos OS provides three priorities when there is no guaranteed rate configured on any logical interface.
Table 1 shows the relationship between Junos OS priorities and the IOC hardware priorities below and above the guaranteed rate CIR.
Junos OS Priority |
IOC Hardware Priority Below Guaranteed Rate |
IOC Hardware Priority Above Guaranteed Rate |
---|---|---|
Strict-high |
High |
High |
High |
High |
Low |
Medium-high |
Medium-high |
Low |
Medium-low |
Medium-high |
Low |
Low |
Medium-low |
Low |
The Junos OS parameters are set in the scheduler map:
[edit class-of-service schedulers] best-effort-scheduler { transmit-rate percent 30; # if no shaping rate buffer-size percent 30; priority high; } expedited-forwarding-scheduler { transmit-rate percent 40; # if no shaping rate buffer-size percent 40; priority strict-high; }
The use of both a shaping rate and a guaranteed rate at the interface set level (level 2) is not supported.
MDRR is provided at three levels of the scheduler hierarchy of the IOC with a granularity of 1 through 255. There are 64 MDRR profiles at the queue level, 16 at the interface set level, and 32 at the physical interface level.
Queue transmit rates are used for queue-level MDRR profile weight calculation. The queue MDRR weight is calculated differently based on the mode set for sharing excess bandwidth. If you configure the equal option for excess bandwidth, then the queue MDRR weight is calculated as:
Queue weight = (255 * Transmit-rate-percentage) / 100
If you configure the proportional option for excess bandwidth, which is the default, then the queue MDRR weight is calculated as:
Queue weight = Queue-transmit-rate / Queue-base-rate, where
Queue-transmit-rate = (Logical-interface-rate * Transmit-rate-percentage) / 100, and
Queue-base-rate = Excess-bandwidth-proportional-rate / 255
To configure the way that the IOC should handle excess bandwidth, configure the excess-bandwidth-share statement at the [edit interface-set interface-set-name] hierarchy level. By default, the excess bandwidth is set to proportional with a default value of 32.64 Mbps. In this mode, the excess bandwidth is shared in the ratio of the logical interface shaping rates. If set to equal, the excess bandwidth is shared equally among the logical interfaces.
The following example sets the excess bandwidth sharing to proportional at a rate of 100 Mbps with a shaping rate of 80 Mbps:
[edit interface-set example-interface-set] excess-bandwidth-share proportional 100m; output-traffic-control-profile PIR-80Mbps;
Shaping rates established at the logical interface level are used to calculate the MDRR weights used at the interface set level. The 16 MDRR profiles are set to initial values, and the closest profile with rounded values is chosen. By default, the physical port MDRR weights are preset to the full bandwidth on the interface.