Description

The QFX device will fail to commit with the following error if unicast and multicast queues are clubbed in the same "forwarding-class-sets"

error: forwarding-class-set rh-schedule has unicast and multicast forwarding classes clubbed
error: configuration check-out failed

Symptoms

Sample configuration to reproduce the error:

s et class-of-service classifiers dscp RH-QOS forwarding-class expedited-forwarding loss-priority low code-points ef
set class-of-service classifiers dscp RH-QOS forwarding-class signaling loss-priority low code-points cs3
set class-of-service classifiers dscp RH-QOS forwarding-class priority loss-priority low code-points af21
set class-of-service classifiers dscp RH-QOS forwarding-class video loss-priority low code-points cs4 <-- Classifiers
set class-of-service classifiers dscp RH-QOS forwarding-class bulk loss-priority low code-points cs1
set class-of-service classifiers dscp RH-QOS forwarding-class network-control loss-priority low code-points cs6

set class-of-service forwarding-classes class best-effort queue-num 0
set class-of-service forwarding-classes class expedited-forwarding queue-num 1
set class-of-service forwarding-classes class network-control queue-num 7
set class-of-service forwarding-classes class signaling queue-num 4
set class-of-service forwarding-classes class video queue-num 5
set class-of-service forwarding-classes class priority queue-num 6
set class-of-service forwarding-classes class bulk queue-num 8 <-- 8 is the multicast queue

set class-of-service traffic-control-profiles rh-schedule scheduler-map rh-schedule  <-- Traffic Control Profile
set class-of-service traffic-control-profiles rh-schedule shaping-rate 100m

set class-of-service forwarding-class-sets rh-schedule class best-effort
set class-of-service forwarding-class-sets rh-schedule class video
set class-of-service forwarding-class-sets rh-schedule class signaling
set class-of-service forwarding-class-sets rh-schedule class priority
set class-of-service forwarding-class-sets rh-schedule class network-control
set class-of-service forwarding-class-sets rh-schedule class expedited-forwarding
set class-of-service forwarding-class-sets rh-schedule class bulk  <-- Multicast queue is added in the same "forwarding-class-sets" as unicast queues

set class-of-service schedulers rh-expedited-forwarding shaping-rate 10m
set class-of-service schedulers rh-expedited-forwarding buffer-size percent 10
set class-of-service schedulers rh-signaling transmit-rate percent 17
set class-of-service schedulers rh-signaling buffer-size percent 17
set class-of-service schedulers rh-video transmit-rate percent 17
set class-of-service schedulers rh-video buffer-size percent 17  <-- Respective Scheduler Map Configuration
set class-of-service schedulers rh-priority transmit-rate percent 17
set class-of-service schedulers rh-priority buffer-size percent 17
set class-of-service schedulers rh-bulk shaping-rate percent 17
set class-of-service schedulers rh-bulk buffer-size percent 17
set class-of-service schedulers rh-best-effort transmit-rate percent 17
set class-of-service schedulers rh-best-effort buffer-size remainder
set class-of-service schedulers rh-network-control transmit-rate percent 5
set class-of-service schedulers rh-network-control buffer-size percent 5

set class-of-service scheduler-maps rh-schedule forwarding-class video scheduler rh-video
set class-of-service scheduler-maps rh-schedule forwarding-class priority scheduler rh-priority
set class-of-service scheduler-maps rh-schedule forwarding-class best-effort scheduler rh-best-effort
set class-of-service scheduler-maps rh-schedule forwarding-class signaling scheduler rh-signaling
set class-of-service scheduler-maps rh-schedule forwarding-class network-control scheduler rh-network-control
set class-of-service scheduler-maps rh-schedule forwarding-class expedited-forwarding scheduler rh-expedited-forwarding
set class-of-service scheduler-maps rh-schedule forwarding-class bulk scheduler rh-bulk <-- Multicast scheduler-map is clubbed with Unicast  

Solution

We cannot have unicast and multicast forwarding classes clubbed in the same forwarding-class-set.

Hence, we need to create separate traffic-control-profiles, forwarding-class-sets and scheduler-maps for multicast traffic as below:

set class-of-service traffic-control-profiles mcast scheduler-map mcast     
set class-of-service forwarding-class-sets mcast class bulk                       
set class-of-service scheduler-maps mcast forwarding-class bulk scheduler rh-bulk

If this CoS configuration has to be applied on an interface, two traffic-control-profiles has to be applied as shown below:

set class-of-service interfaces ge-0/0/10 forwarding-class-set rh-schedule output-traffic-control-profile rh-schedule
set class-of-service interfaces ge-0/0/10 forwarding-class-set mcast output-traffic-control-profile mcast