"QoS Transmit-rate" does not work when the total of all transmit-rate is set to more than 100% of a scheduler (the sum of all queues configured stays at less than 100%). CoS is working as designed; the issue is due to a documentation error. See below for details.
During the investigation, observed that "QoS Transmit-rate" doesn't work when the total of transmit-rate is set to more than 100 a scheduler. For an example, please refer to the following log.
lab@LCC1_RE0> show configuration ## Last commit: 2009-11-20 19:11:04 JST by lab version 9.1S1.1; <---skip---> class-of-service { forwarding-classes { class class1 queue-num 3; class mig_class1 queue-num 4; class class2 queue-num 2; class class3 queue-num 1; class class4 queue-num 0; <---refer to same a quene class mig_class4 queue-num 0; <---refer to same a quene } interfaces { ge-7/0/0 { scheduler-map mig_westmap; } } scheduler-maps { mig_westmap { forwarding-class class1 scheduler class1; forwarding-class mig_class1 scheduler mig_class1; forwarding-class class2 scheduler class2; forwarding-class class3 scheduler class3; forwarding-class class4 scheduler class4; forwarding-class mig_class4 scheduler class4; <<<<<<<<* If you delete this then it will work*/ } } schedulers { class1 { priority strict-high; } mig_class1 { transmit-rate percent 2; priority high; } class2 { transmit-rate percent 36; priority low; } class3 { transmit-rate percent 36; priority low; } class4 { transmit-rate percent 13; priority low; } mig_class4 { transmit-rate percent 13; priority low; } } } *******The sum of all queues configured is 87%.************ *******The sum of all schedulers configured is 100%.*********** <---skip---> lab@LCC1_RE0> start shell pfe network fpc7 GFPC platform (300Mhz MPC 755 processor, 1024MB memory, 512KB flash) EGFPC7(LCC1_RE0 vty)# show cos scheduling-policy scheduler binding to final streams ================================== ifd phy Q tx-BW delay-BW sched rate tcp/plp tcp/plp tcp/plp tcp/plp index strem num (%) (%) priority cntl (0/0) (0/1) (1/0) (1/1) ----- ----- --- ----- -------- -------- ---- ------- ------- ------- ------- 137 64 0 13.0 <--16.6 0 off 1 1 1 1 1 36.0 16.6 0 off 1 1 1 1 2 36.0 16.6 0 off 1 1 1 1 3 255.0 16.6 4 off 1 1 1 1 4 2.0 16.6 3 off 1 1 1 1 0 13.0 <--16.6 0 off 1 1 1 1 138 0 0 95.0 95.0 0 off 1 1 1 1 3 5.0 5.0 0 off 1 1 1 1 scheduler binding to chassis streams ==================================== - No scheduling policy attached - EGFPC7(LCC1_RE0 vty)# show mqchip 0 wan cos Pkt Mem Alloc WRR delta WRR threshold ------------- --------- ------------- [Stream 64] Q 0: 136048 Cells 8559 <--*1 34236 Q 1: 174421 Cells 23704 94816 Q 2: 174421 Cells 23703 94812 Q 3: 174421 Cells 65535 262140 Q 4: 20930 Cells 1317 5268 Q 5: 256 Cells 0 0 Q 6: 256 Cells 0 0 Q 7: 256 Cells 0 0 EGFPC7(LCC1_RE0 vty)# **************** *1 8559=13% **************** lab@LCC1_RE0> configure Entering configuration mode [edit] lab@LCC1_RE0# edit class-of-service scheduler [edit class-of-service schedulers] lab@LCC1_RE0# replace pattern 13 with 26 [edit class-of-service schedulers] lab@LCC1_RE0# show class1 { priority strict-high; } mig_class1 { transmit-rate percent 2; priority high; } class2 { transmit-rate percent 36; priority low; } class3 { transmit-rate percent 36; priority low; } class4 { transmit-rate percent 26; priority low; } mig_class4 { transmit-rate percent 26; priority low; } *******The sum of all queues configured is 100%.************ *******The sum of all schedulers configured is 113%.*********** [edit] lab@LCC1_RE0# commit commit complete [edit] lab@LCC1_RE0# exit Exiting configuration mode lab@LCC1_RE0> start shell pfe network fpc7 GFPC platform (300Mhz MPC 755 processor, 1024MB memory, 512KB flash) EGFPC7(LCC1_RE0 vty)# show cos scheduling-policy scheduler binding to final streams ================================== ifd phy Q tx-BW delay-BW sched rate tcp/plp tcp/plp tcp/plp tcp/plp index strem num (%) (%) priority cntl (0/0) (0/1) (1/0) (1/1) ----- ----- --- ----- -------- -------- ---- ------- ------- ------- ------- 137 64 0 26.0<--255.0 0 off 1 1 1 1 1 36.0 255.0 0 off 1 1 1 1 2 36.0 255.0 0 off 1 1 1 1 3 255.0 255.0 4 off 1 1 1 1 4 2.0 255.0 3 off 1 1 1 1 0 26.0<--255.0 0 off 1 1 1 1 138 0 0 95.0 95.0 0 off 1 1 1 1 3 5.0 5.0 0 off 1 1 1 1 scheduler binding to chassis streams ==================================== - No scheduling policy attached - EGFPC7(LCC1_RE0 vty)# EGFPC7(LCC1_RE0 vty)# show mqchip 0 wan cos Pkt Mem Alloc WRR delta WRR threshold ------------- --------- ------------- [Stream 64] Q 0: 136048 Cells 8559 <--*2 34236 Q 1: 174421 Cells 23704 94816 Q 2: 174421 Cells 23703 94812 Q 3: 174421 Cells 65535 262140 Q 4: 20930 Cells 1317 5268 Q 5: 256 Cells 0 0 Q 6: 256 Cells 0 0 Q 7: 256 Cells 0 0 **************** *1 8559=13% It is not 26% **************** Also noted the following log message. Nov 20 19:15:47.805 LCC1_RE0 fpc7 COSMAN: Wrr underflow, for ge-7/0/0 Nov 20 19:15:47.805 LCC1_RE0 fpc7 COSMAN: policy update failed
lab@LCC1_RE0> show configuration
## Last commit: 2009-11-20 19:11:04 JST by lab version 9.1S1.1; <---skip---> class-of-service { forwarding-classes { class class1 queue-num 3; class mig_class1 queue-num 4; class class2 queue-num 2; class class3 queue-num 1; class class4 queue-num 0; <---refer to same a quene class mig_class4 queue-num 0; <---refer to same a quene } interfaces { ge-7/0/0 { scheduler-map mig_westmap; } } scheduler-maps { mig_westmap { forwarding-class class1 scheduler class1; forwarding-class mig_class1 scheduler mig_class1; forwarding-class class2 scheduler class2; forwarding-class class3 scheduler class3; forwarding-class class4 scheduler class4; forwarding-class mig_class4 scheduler class4; <<<<<<<<* If you delete this then it will work*/ } } schedulers { class1 { priority strict-high; } mig_class1 { transmit-rate percent 2; priority high; } class2 { transmit-rate percent 36; priority low; } class3 { transmit-rate percent 36; priority low; } class4 { transmit-rate percent 13; priority low; } mig_class4 { transmit-rate percent 13; priority low; } } } *******The sum of all queues configured is 87%.************ *******The sum of all schedulers configured is 100%.*********** <---skip---> lab@LCC1_RE0> start shell pfe network fpc7 GFPC platform (300Mhz MPC 755 processor, 1024MB memory, 512KB flash) EGFPC7(LCC1_RE0 vty)# show cos scheduling-policy scheduler binding to final streams ================================== ifd phy Q tx-BW delay-BW sched rate tcp/plp tcp/plp tcp/plp tcp/plp index strem num (%) (%) priority cntl (0/0) (0/1) (1/0) (1/1) ----- ----- --- ----- -------- -------- ---- ------- ------- ------- ------- 137 64 0 13.0 <--16.6 0 off 1 1 1 1 1 36.0 16.6 0 off 1 1 1 1 2 36.0 16.6 0 off 1 1 1 1 3 255.0 16.6 4 off 1 1 1 1 4 2.0 16.6 3 off 1 1 1 1 0 13.0 <--16.6 0 off 1 1 1 1 138 0 0 95.0 95.0 0 off 1 1 1 1 3 5.0 5.0 0 off 1 1 1 1 scheduler binding to chassis streams ==================================== - No scheduling policy attached - EGFPC7(LCC1_RE0 vty)# show mqchip 0 wan cos Pkt Mem Alloc WRR delta WRR threshold ------------- --------- ------------- [Stream 64] Q 0: 136048 Cells 8559 <--*1 34236 Q 1: 174421 Cells 23704 94816 Q 2: 174421 Cells 23703 94812 Q 3: 174421 Cells 65535 262140 Q 4: 20930 Cells 1317 5268 Q 5: 256 Cells 0 0 Q 6: 256 Cells 0 0 Q 7: 256 Cells 0 0 EGFPC7(LCC1_RE0 vty)# **************** *1 8559=13% **************** lab@LCC1_RE0> configure Entering configuration mode [edit] lab@LCC1_RE0# edit class-of-service scheduler [edit class-of-service schedulers] lab@LCC1_RE0# replace pattern 13 with 26 [edit class-of-service schedulers] lab@LCC1_RE0# show class1 { priority strict-high; } mig_class1 { transmit-rate percent 2; priority high; } class2 { transmit-rate percent 36; priority low; } class3 { transmit-rate percent 36; priority low; } class4 { transmit-rate percent 26; priority low; } mig_class4 { transmit-rate percent 26; priority low; } *******The sum of all queues configured is 100%.************ *******The sum of all schedulers configured is 113%.*********** [edit] lab@LCC1_RE0# commit commit complete [edit] lab@LCC1_RE0# exit Exiting configuration mode lab@LCC1_RE0> start shell pfe network fpc7 GFPC platform (300Mhz MPC 755 processor, 1024MB memory, 512KB flash) EGFPC7(LCC1_RE0 vty)# show cos scheduling-policy scheduler binding to final streams ================================== ifd phy Q tx-BW delay-BW sched rate tcp/plp tcp/plp tcp/plp tcp/plp index strem num (%) (%) priority cntl (0/0) (0/1) (1/0) (1/1) ----- ----- --- ----- -------- -------- ---- ------- ------- ------- ------- 137 64 0 26.0<--255.0 0 off 1 1 1 1 1 36.0 255.0 0 off 1 1 1 1 2 36.0 255.0 0 off 1 1 1 1 3 255.0 255.0 4 off 1 1 1 1 4 2.0 255.0 3 off 1 1 1 1 0 26.0<--255.0 0 off 1 1 1 1 138 0 0 95.0 95.0 0 off 1 1 1 1 3 5.0 5.0 0 off 1 1 1 1 scheduler binding to chassis streams ==================================== - No scheduling policy attached - EGFPC7(LCC1_RE0 vty)# EGFPC7(LCC1_RE0 vty)# show mqchip 0 wan cos Pkt Mem Alloc WRR delta WRR threshold ------------- --------- ------------- [Stream 64] Q 0: 136048 Cells 8559 <--*2 34236 Q 1: 174421 Cells 23704 94816 Q 2: 174421 Cells 23703 94812 Q 3: 174421 Cells 65535 262140 Q 4: 20930 Cells 1317 5268 Q 5: 256 Cells 0 0 Q 6: 256 Cells 0 0 Q 7: 256 Cells 0 0 **************** *1 8559=13% It is not 26% ****************
Nov 20 19:15:47.805 LCC1_RE0 fpc7 COSMAN: Wrr underflow, for ge-7/0/0 Nov 20 19:15:47.805 LCC1_RE0 fpc7 COSMAN: policy update failed
CoS is working as designed. This is a Documentation Error. The documentation currently states:
"You can configure up 16 different forwarding-class names. The corresponding output queue number can be from 0 through 7. Therefore, you can map multiple forwarding classes to a single queue. If you map multiple forwarding classes to a queue , the multiple forwarding classes must refer to the same scheduler (at the [edit class-of-service scheduler-maps map-name forwarding-class class-name scheduler scheduler-name] hierarchy level)."
"You can configure up 16 different forwarding-class names. The corresponding output queue number can be from 0 through 7. Therefore, you can map multiple forwarding classes to a single queue. If you map multiple forwarding classes to a queue, only one of those classes can have scheduler (at the [edit class-of-service scheduler-maps map-name forwarding-class class-name scheduler scheduler-name] hierarchy level)."