×

Warning message

  • Cisco Support Forums is in Read Only mode while the site is being migrated.
  • Cisco Support Forums is in Read Only mode while the site is being migrated.
This discussion is locked

Ask the Expert: Quality of Service (QoS) on Cisco IOS Routers

Unanswered Question
Jul 18th, 2014
User Badges:
  • Gold, 750 points or more

Welcome to this Cisco Support Community Ask the Expert conversation. This is an opportunity to learn and ask questions about quality of service (QoS) on Cisco IOS routers with Cisco subject matter expert Akash Agrawal.

A communications network forms the backbone of any successful organization. These networks transport a multitude of applications and data, including high-quality video and delay-sensitive data such as real-time voice. The bandwidth-intensive applications stretch network capabilities and resources, but also complement, add value, and enhance every business process. Networks must provide secure, predictable, measurable, and sometimes guaranteed services. Achieving the required QoS by managing the delay, delay variation (jitter), bandwidth, and packet loss parameters on a network becomes the secret to a successful end-to-end business solution. Thus, QoS is the set of techniques to manage network resources.

Quality of Service (QoS) on Cisco IOS RoutersAkash Agrawal is a customer support engineer in the Cisco High-Touch Technical Support Center in Bangalore, India, supporting Cisco's major service provider customers in routing and Multiprotocol Label Switching (MPLS) technologies. His areas of expertise include routing, switching, MPLS services, traffic engineering, and QoS. He has been in the networking industry for eight years, which includes five years in the service provider industry and three years in Cisco HTTS, and is a dual CCIE, in the routing and switching and service provider tracks.

Remember to use the rating system to let Akash know if you have received an adequate response. 

Because of the volume expected during this event, Akash might not be able to answer every question. Remember that you can continue the conversation in the Network Infrastructure Community, under the subcommunity LAN, Routing and Switching , shortly after the event. This event lasts through August 1, 2014. Visit this forum often to view responses to your questions and the questions of other Cisco Support Community members.

  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 4.9 (78 ratings)
Loading.
Vasilii Mikhail... Fri, 07/25/2014 - 11:20
User Badges:
  • Gold, 750 points or more

Hello.

We are running CBWFQ on ISR2; under class we configure queue-limit and WRED with thresholds larger that queue-limit.

Q: does configured queue-limit affect WRED or thresholds take precedence somehow?

Here is the case:

#sh ver | i IOS
Cisco IOS Software, C3900 Software (C3900-UNIVERSALK9-M), Version 15.1(2)T4, RELEASE SOFTWARE (fc1)

#sh policy-map int s1/0 out  
...
Class-map: class-default (match-any)
      24816524 packets, 14653092687 bytes
      30 second offered rate 20000 bps, drop rate 0 bps
      Match: any 
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/12185/0
      (pkts output/bytes output) 25088479/14797516799
      bandwidth 1807 kbps
        Exp-weight-constant: 6 (1/64)
        Mean queue depth: 0 packets
        class     Transmitted       Random drop      Tail drop          Minimum        Maximum     Mark
                  pkts/bytes     pkts/bytes       pkts/bytes          thresh         thresh     prob
        
        0         2531976/1566836392    477/671839        74/109836            26            68  1/5
        1               0/0               0/0              0/0                 26            68  1/5
        2               0/0               0/0              0/0                 26            68  1/5
        3               0/0               0/0              0/0                 26            68  1/5
        4               0/0               0/0              0/0                 26            68  1/5
        5           14429/3145522         0/0              0/0                 26            68  1/5
        6           10493/583445          0/0              0/0                 85           136  1/10
        7               0/0               0/0              0/0                 26            68  1/5

 

We see "Queue limit" value is default and equal to 64 packets.
But WRED max thresholds are set to 68 and 136 (per precedence).
Total drops = 12185, WRED drops = 477+74 = 551.

So, does this configuration cause a tail-drop problem in class's queue, or configured thresholds implicitly affect maximum queue length, allowing queue to grow up to 136+ packets?

PS: I found QoS behavior description for ASRs only (HFQ vs. old style), but I'm not sure if ISR2 are the same.

Akash Agrawal Sat, 07/26/2014 - 04:17
User Badges:
  • Cisco Employee,

 

Hi,

 

When we configure WRED, WRED threshold takes precedence over queue-limit defined for each class.

Here is one example, in which you can see mean queue depth is much more larger than queue-limit

        Class-map: HSBC_ENHANCED_1 (match-any)
          264187 packets, 369861800 bytes
          30 second offered rate 5585000 bps, drop rate 2373000 bps
          Match: ip dscp af41 (34) af42 (36) af43 (38)
            264187 packets, 369861800 bytes
            30 second rate 5585000 bps
          Queueing
          queue limit 64 packets  <<<<<<
          (queue depth/total drops/no-buffer drops) 0/111675/24233
          (pkts output/bytes output) 152512/213516800
          bandwidth 2940 kbps
            Exp-weight-constant: 9 (1/512)
            Mean queue depth: 990 packets  <<<<<<<
            dscp     Transmitted       Random drop      Tail drop          Minimum        Maximum     Mark
                      pkts/bytes     pkts/bytes       pkts/bytes          thresh         thresh     prob
            
            af41      176745/247443000   87442/122418800      0/0                683          2049  1/1
            af42           0/0               0/0              0/0                410          1366  1/1
            af43           0/0               0/0              0/0                205           683  1/1

 

 

Below is stepwise decisions how QOS is performed on router

 

1.  When packet comes first, router checks, can i directly send the traffic to the driver? If yes then no need to queue it.

2.  If no then router will check if it can buffer the packet, if possible. It is determined by first by the local queue per class or in case of WRED by maximum threshold.

3.  If it turns out that current queue-depth is less than the number of queue-limit, it is passed otherwise we will drop that packet and that will be counted in both normal queue drop and WRED drop.

 

Regards,

Akash

Akash Agrawal Sat, 07/26/2014 - 05:25
User Badges:
  • Cisco Employee,

 

In your output number of drops in WRED is lesser than overall drops that could be because of fact that WRED was applied after some time in this class. If you see total packets classified in class-default is 25088479 while is WRED it is close to 10% of it. May be that is why number of drops are also less.

 

Class-map: class-default (match-any)
      24816524 packets, 14653092687 bytes
      30 second offered rate 20000 bps, drop rate 0 bps
      Match: any 
      Queueing
      queue limit 64 packets
      (queue depth/total drops/no-buffer drops) 0/12185/0
      (pkts output/bytes output) 25088479/14797516799  >>>>>>>>>>>>>
      bandwidth 1807 kbps
        Exp-weight-constant: 6 (1/64)
        Mean queue depth: 0 packets
        class     Transmitted       Random drop      Tail drop          Minimum        Maximum     Mark
                  pkts/bytes     pkts/bytes       pkts/bytes          thresh         thresh     prob
        
        0         2531976/1566836392    477/671839        74/109836            26            68  1/5
        1               0/0               0/0              0/0                 26            68  1/5
        2               0/0               0/0              0/0                 26            68  1/5
        3               0/0               0/0              0/0                 26            68  1/5
        4               0/0               0/0              0/0                 26            68  1/5
        5           14429/3145522         0/0              0/0                 26            68  1/5
        6           10493/583445          0/0              0/0                 85           136  1/10
        7               0/0               0/0              0/0                 26            68  1/5

Vasilii Mikhail... Sat, 07/26/2014 - 06:59
User Badges:
  • Gold, 750 points or more

Hello.

Good catch on packet number, but could we go to 7200 router:

http://www.cisco.com/c/en/us/support/docs/routers/7200-series-routers/11...

And read following:

The behavior is the same as in corresponding pre-HQF section, with one important exception. In HQF images, random-detect and queue-limit can co-exist in the same User-Defined class (or class class-default) and queue-limit will be enabled and tuned to 64 packets in a default configuration. As such, queue-limit will serve as a maximum current queue size in a random-detect class, therefore providing a mechanism to limit no-buffer drops discussed in the corresponding pre-HQF section. Due to this addition, the configured queue-limit must be at least as large as the random-detect max-threshold, where the random-detect max-threshold will default to 40 packets, or else the parser will reject the configuration.

 

Does this mean, that queue-limit we see in my example is just a "default" setting and cosmetic bug?

Akash Agrawal Sat, 07/26/2014 - 12:57
User Badges:
  • Cisco Employee,

Hello,

 

Though it is not giving error and accepting the max-threshold more than queue-limit but i guess queue length will be limited to queue-limit in case of hqf. You can check queue-limit for any class in output of "show hqf int <int>"

If it is showing equal to max-threshold of the WRED, please let me know. 

R6_ASR6#show hqf int gig1/0/1 | i limit

   aggregate limit/bytes 4166/0 availbuffers 4166
   mincir 1000000 queue_limit 4166 excess_ratio 1
     aggregate limit/bytes 83/0 availbuffers 83  
     mincir 20000 queue_limit 83 excess_ratio 1  
     aggregate limit/bytes 83/0 availbuffers 83
     mincir 20000 queue_limit 83 excess_ratio 1
     aggregate limit/bytes 166/0 availbuffers 166
     mincir 40000 queue_limit 166 excess_ratio 1
R6_ASR6#

Vasilii Mikhail... Fri, 07/25/2014 - 11:26
User Badges:
  • Gold, 750 points or more

Good time-of-day.

One more question.

We configure CBWFQ; all classes are using bandwidth + queue-limit; sum of bandwidth = 75%; class-default configured with fair-queue only (no bandwidth statement).

Q: could this configuration lead to class-default starvation (no bandwidth is guaranteed) when the other classes borrow unallocated bandwidth? Does behavior depend on IOS version (before and after HFQ)?

PS: we are running a lot of ISR (12.4.24 and 12.4.15) and ISR2 (15.1 and 15.2).

 

Akash Agrawal Sat, 07/26/2014 - 03:28
User Badges:
  • Cisco Employee,

Hi,

 

As per below CCO document, if bandwidth command is not defined in class-default, other classes can borrow unallocated bandwidth and can starve the class-default.  Are you see any different behaviour on ISR routers. Are you able to allocate to bandwidth to class-default with fair-queue enabled on ISR router?

http://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/WAN_and_MAN/Qo...

 an explicit bandwidth guarantee (of 25 percent) must be given to the Best-Effort class. Otherwise, if class-default is not explicitly assigned a minimum bandwidth guarantee, the Scavenger class still can rob it of bandwidth. This is because of the way the CBWFQ algorithm has been coded: If classes protected with a bandwidth statement are offered more traffic than their minimum bandwidth guarantee, the algorithm tries to protect such excess traffic at the direct expense of robbing bandwidth from class-default (if class-default is configured with fair-queue), unless class-default itself has a bandwidth statement (providing itself with a minimum bandwidth guarantee). 

Regards,

Akash

 

Vasilii Mikhail... Sat, 07/26/2014 - 03:49
User Badges:
  • Gold, 750 points or more

Hello.

Thanks you for the link.

But you refer to really old document; new version is available at http://www.cisco.com/c/en/us/td/docs/solutions/Enterprise/WAN_and_MAN/Qo...

Anyway it doesn't give us a reference to IOS version. I assume it's pre-HFQ behavior.

So, could you please clarify if it differs for 12.4(24) and 15.x IOS?

---

If we read http://www.cisco.com/c/en/us/support/docs/routers/7200-series-routers/11... then we may see comparative difference between HFQ and pre-HFQ and here it's really clear:

HFQ: At all times, regardless of configuration, class class-default in HQF images will always have an implicit bandwidth reservation equal to the unused interface bandwidth not consumed by user-defined classes. By default, the class-default class receives a minimum of 1% of the interface or parent shape bandwidth. It is also possible to explicitly configure the bandwidth CLI in class default.

But the document describes 7200 routers and I need to know if the same behavior may be expected on other ISR/ISR2.

Thanks.

Akash Agrawal Sat, 07/26/2014 - 12:49
User Badges:
  • Cisco Employee,

Hello,

Thanks for the link and i checked on it further and there is very good command to check bandwidth reservation to different classes in case of hqf and that is "show hqf interface <int>"

I tried this on ASR1K 152-4.S.

To check whether HQF is deployed or not command is "show subsys | i hqf"

When there is no bandwidth allocation to class-default mincir to class-default is 0, so i guess there is no minimum bw guarantee for class-default even in case of hqf. But CCO document is little confusing, i will check on this and get back to you.

 

R6_ASR6#show subsys | i hqf

hqf_c3pl_account                   Library     1.000.000     
hqf_blt                            Protocol    2.000.001     
hqf_dynamic_if_subsys              Protocol    1.000.001     
hqf_sss_subsys                     Protocol    1.000.001     
hqf_sa_sss_subsys                  Protocol    1.000.001     
hqf_rp_rsvp                        Protocol    2.000.001     
hqf_tunnel_subsys                  Protocol    1.000.001     
hqf_cp_c3pl                        Protocol    1.000.001     
hqf_ui                             Protocol    2.000.001     
hqf                                Protocol    1.000.001 

 

I configured below policy-map first without any bandwidth allocation to class-default 

R6_ASR6#show policy-map test

  Policy Map test
    Class EF
      bandwidth 40 (%)
    Class AF12
      bandwidth 40 (%)
    Class class-default
       packet-based wred, exponential weight 4
      
      class    min-threshold    max-threshold    mark-probablity
      ----------------------------------------------------------
      0       -                -                1/10
      1       1000             4200             1/10
      2       -                -                1/10
      3       -                -                1/10
      4       -                -                1/10
      5       -                -                1/10
      6       -                -                1/10
      7       -                -                1/10
R6_ASR6#

 

and output is as below

R6_ASR6#show hqf int gig1/0/1

Interface Number 8 (type 27) GigabitEthernet1/0/1
 OUTPUT FEATURES 

   blt (0x7F9DB4EF8208, index 0, qid 7, fast_if_number 9) layer PHYSICAL
   scheduling policy: WFQ (111)
   classification policy: CLASS_BASED (122)
   drop policy: TAIL (141)
   packet size fixup policy: NONE (0)
   blt flags: 0x4800020 (3-params scheduler)
   total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 0 total active 0 

   txcount 397 txqbytes 25949 drops 0 qdrops 0 nobuffers 0 flowdrops 0  
   aggregate limit/bytes 4166/0 availbuffers 4166
   holdqueue_out 0 perc 0.00 remaining_ratio/perc 1
   visible_bw 1000000 max_rate 1000000 allocated_bw 1000000 excess_ratio 1
   mincir 1000000 queue_limit 4166 excess_ratio 1
   ecn_threshold NONE     offset 0 
   backpressure_policy 0
   (max entries 8) (layer flags 0x8)

     next layer HQFLAYER_CLASS_HIER0 (max entries 8)

     blt (0x7F9DB4EF8118, index 0, qid 8, fast_if_number 9) layer CLASS_HIER0 <<<<<< for class-default
     scheduling policy: FIFO (110)
     classification policy: NONE (120)
     drop policy: WRED (142)  <<<<<<<<< drop policy WRED
     packet size fixup policy: NONE (0)
     blt flags: 0x4804020 (3-params scheduler)
     total guarantee percent 8000 total remaining perc 0 total bandwidth guarantee 0 total active 1 
  
     txcount 397 txqbytes 25949 drops 0 qdrops 0 nobuffers 0 flowdrops 0 
     aggregate limit/bytes 4166/0 availbuffers 4166
     holdqueue_out 0 perc 0.00 remaining_ratio/perc 1
     visible_bw 0 max_rate 1000000 allocated_bw 1000000 excess_ratio 1
     mincir 0 queue_limit 4166 excess_ratio 1  <<<<<<<< mincir is 0
     ecn_threshold NONE     offset 0 
     backpressure_policy 0
  
     blt (0x7F9DB4EF7F38, index 1, qid 9, fast_if_number 9) layer CLASS_HIER0
     scheduling policy: FIFO (110)
     classification policy: NONE (120)
     drop policy: TAIL (141)
     packet size fixup policy: NONE (0)
     blt flags: 0x4800120 (3-params scheduler)
     total guarantee percent 8000 total remaining perc 0 total bandwidth guarantee 0 total active 1 
  
     txcount 0 txqbytes 0 drops 0 qdrops 0 nobuffers 0 flowdrops 0
     aggregate limit/bytes 1666/0 availbuffers 1666
     holdqueue_out 0 perc 40.00 remaining_ratio/perc 0
     visible_bw 400000 max_rate 1000000 allocated_bw 400000 excess_ratio 1 
     mincir 400000 queue_limit 1666 excess_ratio 1 <<<<<< minimum bandwidth 400meg to class AF12
     ecn_threshold NONE     offset 0 
     backpressure_policy 0
  
     blt (0x7F9DB4EF8028, index 2, qid 10, fast_if_number 9) layer CLASS_HIER0
     scheduling policy: FIFO (110)
     classification policy: NONE (120)
     drop policy: TAIL (141)
     packet size fixup policy: NONE (0)
     blt flags: 0x4800120 (3-params scheduler)
     total guarantee percent 8000 total remaining perc 0 total bandwidth guarantee 0 total active 1 
  
     txcount 0 txqbytes 0 drops 0 qdrops 0 nobuffers 0 flowdrops 0
     aggregate limit/bytes 1666/0 availbuffers 1666
     holdqueue_out 0 perc 40.00 remaining_ratio/perc 0
     visible_bw 400000 max_rate 1000000 allocated_bw 400000 excess_ratio 1
     mincir 400000 queue_limit 1666 excess_ratio 1 <<<<<< minimum bandwidth 400meg to class EF
     ecn_threshold NONE     offset 0 
     backpressure_policy 0
  
R6_ASR6# 

 

When configured bandwidth 20% on class-default


     next layer HQFLAYER_CLASS_HIER0 (max entries 8)

     blt (0x7F9DB4EF8118, index 0, qid 8, fast_if_number 9) layer CLASS_HIER0
     scheduling policy: FIFO (110)
     classification policy: NONE (120)
     drop policy: WRED (142)
     packet size fixup policy: NONE (0)
     blt flags: 0x4804120 (3-params scheduler)
     total guarantee percent 10000 total remaining perc 0 total bandwidth guarantee 0 total active 0 
  
     txcount 427 txqbytes 27840 drops 0 qdrops 0 nobuffers 0 flowdrops 0
     aggregate limit/bytes 833/0 availbuffers 833
     holdqueue_out 0 perc 20.00 remaining_ratio/perc 0
     visible_bw 200000 max_rate 1000000 allocated_bw 200000 excess_ratio 1
     mincir 200000 queue_limit 833 excess_ratio 1  <<<<<<<<< mincir changed to 200meg
     ecn_threshold NONE     offset 0 
     backpressure_policy 0
  

 

Vasilii Mikhail... Sun, 07/27/2014 - 00:32
User Badges:
  • Gold, 750 points or more

Thank you for clarification.

Could you please confirm the same behavior for ISR2 (IOS 15.x) devices?

Vasilii Mikhail... Mon, 07/28/2014 - 02:31
User Badges:
  • Gold, 750 points or more

I don't have "show hqf ..." command on any ISR2 device.

Akash Agrawal Mon, 07/28/2014 - 05:28
User Badges:
  • Cisco Employee,

 

Please provide output of "show version" and "show inventory". Or you can attach show tech file.

Vasilii Mikhail... Mon, 07/28/2014 - 10:53
User Badges:
  • Gold, 750 points or more

Hello, Akash.

The command is hidden (no help available).

Thanks. I think show hfq could clarify everything on any platform IOS.

I think the use for FQ is that it doesn't allow single flow to saturate the class.

Akash Agrawal Wed, 07/30/2014 - 09:01
User Badges:
  • Cisco Employee,

Hello Vasilii,

 

II am not sure with FQ you are referring to FIFO queuing or Fair-Queue but it is FIFO queue, I would like to mention that with Fair-Queue also one flow would not saturate the class and explanation is given below. 

 

In HQF, we no longer use the pre-HQF “Weight” concept to schedule within a Fair-Queue. This is because in HQF, every class configured with “fair-queue” will have an implicit or explicit “bandwidth” reservation. In other words, all flows within a fair-queue will be treated  (and therefore scheduled) equally compared to each other. As such, what is the benefit or running “fair-queue” at all in HQF? 

Consider a User-defined class in which you're classifying using IP precedence 3. If the class were FIFO, a src/dest IP flow of Prec 3 could exhaust all 64 default queueing buffers. By adding the “fair-queue” command to coexist with the “bandwidth” reservation, we can now ensure every src/dest IP flow gets at least 16 buffers, where the flow-queue buffers are calculated as (.25 * “queue-limit”). 
This ensures every flow has a fair chance of being enqueued and not dropped. Each flow-queue with a non-zero queue-depth is scheduled to tx_ring in a round-robin fashion, with aggregate scheduling based on the classes “bandwidth” reservation, either implicit or explicit.

 

I hope i was able to help you in answering your queries. 

-Akash

 

Joseph W. Doherty Wed, 07/30/2014 - 10:25
User Badges:
  • Super Bronze, 10000 points or more

Nice reference.  Didn't know ASRs were different from 7200s.  Thanks.

Akash Agrawal Mon, 07/28/2014 - 03:44
User Badges:
  • Cisco Employee,

Hi,

 

I checked on ISR 151-4.M8, 124-24.T8 and 7200 (124-24.T5). On each router I see same behavior what is mentioned the in the CCO document that bandwidth not consumed by other user-defined class gets allocated to class-default.

 

Example :

Configured a policy-map with two classes defined, bandwidth allocation to 400 meg and 35 meg. remaining 565 meg allocated to class-default. Also have configured WRED in the class-default with max threshold (80) more than queue-limit (64) but the queue-limit in hqf output is limited to 64.

R31#show policy-map test
  Policy Map test
    Class EF
      bandwidth 400000 (kbps)
      fair-queue
    Class AF12
      bandwidth 35000 (kbps)
    Class class-default
       packet-based wred, exponential weight 9

      class    min-threshold    max-threshold    mark-probablity
      ----------------------------------------------------------
      0       26               80               1/1
      1       26               80               1/1
      2       26               80               1/1
      3       26               80               1/1
      4       26               80               1/1
      5       26               80               1/1
      6       26               80               1/1
      7       26               80               1/1
      fair-queue
R31# 

R31#show hqf int gig0/0         

Interface Number 3 (type 27) GigabitEthernet0/0
 OUTPUT FEATURES 

   blt (0x4B06837C, index 0, fast_if_number 39) layer PHYSICAL
   scheduling policy: WFQ
   classification policy: CLASS_BASED
   drop policy: TAIL
   blt flags: 0x20000    scheduler: 0x49B53B14

   total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 0 total active 0 

   txcount 251 drops 0 qdrops 0 nobuffers 0 flowdrops 0
   qsize 0 aggregate limit/bytes 250000/0 availbuffers 250000
   holdqueue_out 1000 weight 1 perc 0.00 remaining_ratio/perc 0
   visible_bw 1000000 max_rate 1000000 allocated_bw 1000000 vc_encap 0 ecn_threshold NONE
   quantum 1500 credit A 0 credit B 0 backpressure_policy 0
   scheduler_flags 13F
   last_sortq[A/B] 0/0, remaining pak/particles 0/0
   leaf_blt[P] 0x49B53B14 burst packets/bytes[P] 0/0
   leaf_blt[NOTP] 0x49B53B14 burst packets/bytes[NOTP] 0/0
          
     next layer HQFLAYER_CLASS_HIER0 (max entries 256)

     blt (0x4B0682EC, index 0, fast_if_number 39) layer CLASS_HIER0
     scheduling policy: WFQ
     classification policy: FLOW_BASED
     drop policy: WRED

     blt flags: 0x20041    scheduler: 0x49B53AAC
  
     total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 435000 total active 1 
  
     txcount 251 drops 0 qdrops 0 nobuffers 0 flowdrops 0
     qsize 0 aggregate limit/bytes 64/16000 availbuffers 64
     holdqueue_out 0 weight 4 perc 56.50 remaining_ratio/perc 0
     visible_bw 565000 max_rate 1000000 allocated_bw 565000 vc_encap 0 ecn_threshold NONE
     quantum 1537 credit A 721 credit B 0 backpressure_policy 0
     scheduler_flags 13F
     last_sortq[A/B] 68/0, remaining pak/particles 0/0
     leaf_blt[P] 0x49B53AAC burst packets/bytes[P] 0/0
     leaf_blt[NOTP] 0x49B469DC burst packets/bytes[NOTP] 1/60

     WRED: mode 0 byte/packet 3 queue average 0, weight 1/512, 
       Class 0 (hash 0): 26 min threshold, 80 max threshold, 1/1 mark weight
       251 packets output, drops: 0 random, 0 threshold
       Class 1 (hash 1): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)
       Class 2 (hash 2): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)
       Class 3 (hash 3): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)
       Class 4 (hash 4): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)
       Class 5 (hash 5): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)
       Class 6 (hash 6): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)
       Class 7 (hash 7): 26 min threshold, 80 max threshold, 1/1 mark weight
       (no traffic)

       next layer HQFLAYER_FLOW (max entries 256)

       blt (0x4B0680AC, index 0, fast_if_number 39) layer FLOW
       scheduling policy: FIFO
       classification policy: NONE
       drop policy: PARENT_WRED_OR_TAIL
       blt flags: 0x0    scheduler: 0x49B4D174
    
       total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 0 total active 1 
    
       txcount 251 drops 0 qdrops 0 nobuffers 0 flowdrops 0
       qsize 0 aggregate limit/bytes 16/0 availbuffers 16
       holdqueue_out 0 weight 1 perc 0.00 remaining_ratio/perc 0
       visible_bw 565000 max_rate 1000000 allocated_bw 565000 vc_encap 0 ecn_threshold NONE
       quantum 1537 credit A 0 credit B 0 backpressure_policy 0
       scheduler_flags 13F
       last_sortq[A/B] 17/0, remaining pak/particles 0/0
       leaf_blt[P] 0x49B4D174 burst packets/bytes[P] 0/0
       leaf_blt[NOTP] 0x49B4D174 burst packets/bytes[NOTP] 0/0

     blt (0x4B06825C, index 1, fast_if_number 39) layer CLASS_HIER0
     scheduling policy: WFQ
     classification policy: FLOW_BASED
     drop policy: TAIL
     blt flags: 0x20044    scheduler: 0x49B53A44
  
     total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 435000 total active 1 
  
     txcount 0 drops 0 qdrops 0 nobuffers 0 flowdrops 0
     qsize 0 aggregate limit/bytes 64/16000 availbuffers 64
     holdqueue_out 0 weight 6 perc 40.00 remaining_ratio/perc 0
     visible_bw 400000 max_rate 1000000 allocated_bw 400000 vc_encap 0 ecn_threshold NONE
     quantum 1632 credit A 0 credit B 0 backpressure_policy 0
     scheduler_flags 13F
     last_sortq[A/B] 68/0, remaining pak/particles 0/0
     leaf_blt[P] 0x49B53A44 burst packets/bytes[P] 0/0
     leaf_blt[NOTP] 0x49B53A44 burst packets/bytes[NOTP] 0/0

       next layer HQFLAYER_FLOW (max entries 256)

       blt (0x4B0681CC, index 0, fast_if_number 39) layer FLOW
       scheduling policy: FIFO
       classification policy: NONE
       drop policy: PARENT_WRED_OR_TAIL
       blt flags: 0x0    scheduler: 0x49B539DC
    
       total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 0 total active 1 
          
       txcount 0 drops 0 qdrops 0 nobuffers 0 flowdrops 0
       qsize 0 aggregate limit/bytes 16/0 availbuffers 16
       holdqueue_out 0 weight 1 perc 0.00 remaining_ratio/perc 0
       visible_bw 400000 max_rate 1000000 allocated_bw 400000 vc_encap 0 ecn_threshold NONE
       quantum 1500 credit A 0 credit B 0 backpressure_policy 0
       scheduler_flags 13F
       last_sortq[A/B] 0/0, remaining pak/particles 0/0
       leaf_blt[P] 0x49B539DC burst packets/bytes[P] 0/0
       leaf_blt[NOTP] 0x49B539DC burst packets/bytes[NOTP] 0/0

     blt (0x4B06813C, index 2, fast_if_number 39) layer CLASS_HIER0
     scheduling policy: FIFO
     classification policy: NONE
     drop policy: TAIL
     blt flags: 0x20004    scheduler: 0x49B4D1DC
  
     total guarantee percent 0 total remaining perc 0 total bandwidth guarantee 435000 total active 1 
  
     txcount 0 drops 0 qdrops 0 nobuffers 0 flowdrops 0
     qsize 0 aggregate limit/bytes 64/16000 availbuffers 64
     holdqueue_out 0 weight 63 perc 3.50 remaining_ratio/perc 0
     visible_bw 35000 max_rate 1000000 allocated_bw 35000 vc_encap 0 ecn_threshold NONE
     quantum 1500 credit A 0 credit B 0 backpressure_policy 0
     scheduler_flags 13F
     last_sortq[A/B] 68/0, remaining pak/particles 0/0
     leaf_blt[P] 0x49B4D1DC burst packets/bytes[P] 0/0
     leaf_blt[NOTP] 0x49B4D1DC burst packets/bytes[NOTP] 0/0

R31# 

 

HQF: class default is a FIFO queue with a bandwidth reservation equal to: 


A. If no user-defined classes exist with "shape" but without "bandwidth", the leftover "bandwidth" after subtracting all "bandwidth" and "priority" reservations in User Defined classes from (.99 * interface_"bandwidth").


class-default bandwidth = (.99 * interface_"bandwidth") - bandwidth_sum to all classes and priority reservations


B. If user-defined classes exist with "shape" but without "bandwidth", use this formula:


[((.99 *interface_"bandwidth") - SUM(MQC_"bandwidth",MQC_"priority")) /(#_of_classes_with_"shape"_but_without_"bandwidth") + 1]


Note: The formula above can be used when the queueing policy’s attach-point is a physical interface. If the attach point is instead a shaper (ATM PVC, MQC, FRTS), substitute interface_”bandwidth” with the appropriate shape rate. 


C. The “bandwidth” command explicitly configured in Class Default, if one exists.


Note: In HQF, all classes with queueing actions, whether configured with “fair-queue” or not, including class-default, will have an implicit bandwidth reservation equal to at least 1% of nterface_"bandwidth". This is a major departure from pre-HQF code because in HQF, class-default and user-defined classes with “shape” will always have a minimum bandwidth reservation, either implicit or explicit.


Note: In HQF, class-default can be converted to a FQ with “fair-queue”, which can co-exist with “bandwidth”, either implicit or explicit.


In HQF, we no longer use the pre-HQF “Weight” concept to schedule within a Fair-Queue. This is because in HQF, every class configured with “fair-queue” will have an implicit or explicit “bandwidth” reservation. In other words, all flows within a fair-queue will be treated  (and therefore scheduled) equally compared to each other. As such, what is the benefit or running “fair-queue” at all in HQF? 

Consider a User-defined class in which you're classifying using IP precedence 3. If the class were FIFO, a src/dest IP flow of Prec 3 could exhaust all 64 default queueing buffers. By adding the “fair-queue” command to coexist with the “bandwidth” reservation, we can now ensure every src/dest IP flow gets at least 16 buffers, where the flow-queue buffers are calculated as (.25 * “queue-limit”). 
This ensures every flow has a fair chance of being enqueued and not dropped. Each flow-queue with a non-zero queue-depth is scheduled to tx_ring in a round-robin fashion, with aggregate scheduling based on the classes “bandwidth” reservation, either implicit or explicit.

Vasilii Mikhail... Mon, 07/28/2014 - 06:23
User Badges:
  • Gold, 750 points or more

Hello, Akash.

I saw the citation before, but I doubt if it refers to HFQ.

Yes, it's possible to configure bandwidth statement with fair-queue under class-default (ISR2).

 

Class-map: class-default (match-any)  
          3791920878 packets, 3656347126083 bytes
          5 minute offered rate 3798000 bps, drop rate 4000 bps
          Match: any 
          Queueing
          queue limit 128 packets
          (queue depth/total drops/no-buffer drops/flowdrops) 33/28179868/0/0
          (pkts output/bytes output) 3765332970/3901238747012
          bandwidth 35% (5075 kbps)
          police:
              cir 14500000 bps, bc 36250 bytes, be 36250 bytes
            conformed 3695585638 packets, 3525400342408 bytes; actions:
              set-dscp-transmit default
            exceeded 72390953 packets, 97855981428 bytes; actions:
              set-dscp-transmit default
            violated 23944298 packets, 33090817835 bytes; actions:
              set-dscp-transmit default
            conformed 3673000 bps, exceeded 88000 bps, violated 25000 bps
            Exp-weight-constant: 9 (1/512)
            Mean queue depth: 8 packets
            class       Transmitted      Random drop      Tail/Flow drop Minimum Maximum Mark
                        pkts/bytes       pkts/bytes      pkts/bytes   thresh  thresh  prob
            
            0       3765332984/3901238757168 24527383/28712961558 3652485/4115275562         20            60  1/10
            1               0/0               0/0              0/0                 22            40  1/10
            2               0/0               0/0              0/0                 24            40  1/10
            3               0/0               0/0              0/0                 26            40  1/10
            4               0/0               0/0              0/0                 28            40  1/10
            5               0/0               0/0              0/0                 30            40  1/10
            6               0/0               0/0              0/0                 32            40  1/10
            7               0/0               0/0              0/0                 34            40  1/10
          Fair-queue: per-flow queue limit 32 packets

Joseph W. Doherty Mon, 07/28/2014 - 06:01
User Badges:
  • Super Bronze, 10000 points or more

Disclaimer

The Author of this posting offers the information contained within this posting without consideration and with the reader's understanding that there's no implied or expressed suitability or fitness for any purpose. Information provided is for informational purposes only and should not be construed as rendering professional advice of any kind. Usage of this posting's information is solely at reader's own risk.

Liability Disclaimer

In no event shall Author be liable for any damages whatsoever (including, without limitation, damages for loss of use, data or profit) arising out of the use or inability to use the posting's information even if Author has been advised of the possibility of such damage.

Posting

Vasilii, what I believe happens, bandwidth allocations, whether implicit or explicit, sets dequeuing scheduling weights and my understanding is no non-LLQ flow should be totally starved except possibly by LLQ.

Basically, if you set a class bandwidth to 25%, its dequeuing scheduling should be such that it will obtain at least 25% of the bandwidth assuming all the other 75% has been allocated and all classes are trying to obtain their allocated bandwidth or more.  (NB: an exception is class-default, FQ, pre-HQF.)

For example, if you have three classes:

policy-map sample

class A

bandwidth 25 percent

class B

bandwidth 25 percent

class class-default

bandwidth 25 percent

if they all want all the bandwidth, each should obtain 1/3 the bandwidth, because each will have the same dequeuing scheduling weight.  If one class had no traffic, and the other two still wanted all the bandwidth, each should obtain 50%.  If only one class had traffic, it could obtain all 100%.

In the above, you would obtain the same dequeuing result, as long as all 3 classes had the same bandwidth allocation (although the actual dequeuing scheduling weights could differ).

Vasilii Mikhail... Mon, 07/28/2014 - 06:06
User Badges:
  • Gold, 750 points or more

Hello, Joseph.

Thanks for the hint, but I know how CBWFQ is supposed to work.

My question is not about "if we configure class-default with bandwidth statement", but - "what if we omit bandwidth statement under class-default".

PS: I will appreciate proof-links.

Joseph W. Doherty Mon, 07/28/2014 - 07:30
User Badges:
  • Super Bronze, 10000 points or more

Disclaimer

The Author of this posting offers the information contained within this posting without consideration and with the reader's understanding that there's no implied or expressed suitability or fitness for any purpose. Information provided is for informational purposes only and should not be construed as rendering professional advice of any kind. Usage of this posting's information is solely at reader's own risk.

Liability Disclaimer

In no event shall Author be liable for any damages whatsoever (including, without limitation, damages for loss of use, data or profit) arising out of the use or inability to use the posting's information even if Author has been advised of the possibility of such damage.

Posting

Oh well, if you omit class-default's bandwidth statement, it should default, I believe, to reserved bandwidth value (default 25%) for pre-HQF and to 1% for post-HQF, but I wouldn't guarantee that (especially across different IOS versions - if you want a certain percentage, best to explicitly define).

In any case, whatever the default happens to be (likely an omitted bandwidth is the same as omitting [explicitly] the class class-default), since the class is always present (i.e. explicitly or implicitly defined), other non-LLQ classes shouldn't be able to totally starve it, but LLQ might.

Vasilii Mikhail... Mon, 07/28/2014 - 10:45
User Badges:
  • Gold, 750 points or more

Hello, Joseph.

Thanks for your post, but I need a clear description in some Cisco QoS document.

The only proof link Akash has provided was really old QoS Design document that was written long before HFQ.

stemrikar Sun, 07/27/2014 - 06:18
User Badges:

Limiting priority queue on catalyst interface:

on 7600 catalyst card ( CEF720 24 port 1000mb SFP)  interface. how to police/rate limit priority queue so that other queues are not starved.

Akash Agrawal Mon, 07/28/2014 - 06:23
User Badges:
  • Cisco Employee,

Hi,

 

I think It is related to LAN qos and out of scope of this discussion forum.

 

-Akash

stemrikar Sun, 07/27/2014 - 06:19
User Badges:

service policy behavior difference:

CE_N<>PE_N<>P<>PE_F<>CE_F

below policies are applied on PE_N

interface Vlan10
 no ip address
 xconnect 192.168.1.1 10 encapsulation mpls
 service-policy input Policy-2Mb-In
end

interface Vlan20
 vrf forwarding Cust-B
 ip address 10.1.152.57 255.255.255.252
 service-policy input Policy-2Mb-In
end

Q. vlan 20 we all are clear will restrict traffic coming from  CE_N

Do policy on vlan10 restrict traffic coming from CE_F?

As i have seen this behavior on Cisco devices based network. Sorry have lost the logs.

 

 

Akash Agrawal Mon, 07/28/2014 - 07:02
User Badges:
  • Cisco Employee,

Hi,

 

I checked in lab on 7600 with RSP720-3C-10GE, 7600-ES+20G3CXL and not see that incoming service-policy is matching outgoing traffic on L2circuit. Suspecting it could be related to particular hw limitation. You can also refer DDTS CSCso41900 for reference. If you still seeing this issue and have details of HW being used, that would be helpful

 

-Akash

stemrikar Sun, 07/27/2014 - 06:21
User Badges:

MVPN qos:

In a SP network offering MVPN, below policy is used for customer marking

  Policy Map Policy-80MB-In
    Class class-default
     police cir 81920000 bc 15360000 be 30720000
       conform-action set-mpls-exp-imposition-transmit 5
       exceed-action drop
       violate-action drop

 

the unicast pakets when label switch will bear exp bit 5.

however the m-packets coming from same CE . will not be label switched . Please expalin how qos will be featured on the native ip (gre tunneled) packets in SP backbone.

 

If we set ip prec 5 it overrides set mpls exp 5 , so then in this scenario, what will be the marking on labeled switched packet.

Akash Agrawal Sun, 07/27/2014 - 23:10
User Badges:
  • Cisco Employee,

Hi,

 

You can create another class to match all multicast traffic and set ip prec 5.

 

R1_7606A#show policy-map Policy-80MB-In-Parent
  Policy Map Policy-80MB-In-Parent
    Class class-default
     police cir 81920000 bc 15360000 be 30720000
       conform-action transmit 
       exceed-action drop 
       violate-action drop 
      service-policy Policy-80MB-In-child
R1_7606A#

R1_7606A#sh policy-map Policy-80MB-In-child
  Policy Map Policy-80MB-In-child
    Class MVPN
      set ip precedence 5
    Class class-default
      set mpls experimental imposition 5
R1_7606A#

R1_7606A#show class-map MVPN
 Class Map match-all MVPN (id 4)

   Match access-group name  Multicast-Traffic

R1_7606A#


R1_7606A#show ip access-lists Multicast-Traffic
Extended IP access list Multicast-Traffic
    10 permit ip any 224.0.0.0 15.255.255.255
R1_7606A#

stemrikar Sun, 07/27/2014 - 06:23
User Badges:

General Qos Questions:

Q1. What is the difference between match ip dscp and  match dscp command.

Q2. Please explain in detail (if possible with examples) the command mls qos vlan-based.

Akash Agrawal Sun, 07/27/2014 - 23:16
User Badges:
  • Cisco Employee,

Hi,

 

Please go through below CCO document explaining command "match dscp"

 

http://www.cisco.com/c/en/us/td/docs/ios/qos/command/reference/qos_book/...

 

Match dscp matches both ipv4 and ipv6 traffie while match ip dscp matches only ipv4 traffic.

 

match dscp

To identify one or more differentiated service code point (DSCP), Assured Forwarding (AF), and Certificate Server (CS) values as a match criterion, use the match dscp command in class-map configuration mode. To remove a specific DSCP value from a class map, use the no form of this command.

match [ip] dscp dscp-value [dscp-value dscp-value dscp-value dscp-value dscp-value dscp-value dscp-value]

no match [ip] dscp dscp-value

Syntax Description

 

ip

(Optional) Specifies that the match is for IPv4 packets only. If not used, the match is on both IPv4 and IPv6 packets.

Note For the Cisco 10000 series router, the ip keyword is required.

dscp-value

The DSCP value used to identify a DSCP value. For valid values, see the "Usage Guidelines."

 

 

Command Default

No match criteria is configured.

If you do not enter the ip keyword, matching occurs on both IPv4 and IPv6 packets.

Command Modes

Class-map configuration

Command History

 
Release
Modification

12.2(13)T

This command was introduced. This command replaces the match ip dscp command.

12.0(28)S

Support for this command in IPv6 was added in Cisco IOS Release S12.0(28)S on the

12.0(17)SL

This command was implemented on the Cisco 10000 series router.

12.2(31)SB

This command was integrated into Cisco IOS Release 12.2(31)SB.

sumit19851 Thu, 07/31/2014 - 09:47
User Badges:

Hi,

 

Thanks for useful info on this forum. I have one basic doubt and would like to clarify.

What is requirement of the HW queue, how can i change it, what is recommended value and what will be effect of increasing/decreasing hw queue length.

Akash Agrawal Thu, 07/31/2014 - 10:25
User Badges:
  • Cisco Employee,

Hi,

Hardware queue’s objective is to drive the link utilization to 100 percent. Router wants to utilize maximum of link bandwidth and when one packet is transmitted interface does not need to rely on general-purpose processor to start sending the next packet. The hardware queue can directly be accessed by ASICs associated with an interface. So even if the general purpose processor is busy, the interface can begin sending the next packet without waiting for the router CPU.

 

You can change it with below command

 

R11_2851(config-if)#tx-ring-limit ?

  <1-32767>  Number (ring limit)

 

Effect of small or large Tx queue.

 

In case of large Tx queue, it may change the order packets should get scheduled. For example say suppose there are two queue, queue 1 and queue 2. Queue1 is high priority queue  and queue2 is low priority queue. Now 6 packets come at a time but first two packets are low priority and next 4 packets are high priority packets. Ideally first two packets should be processed after packet3,4,5 and 6 but since we have HW queue, first two packets would directly be placed on the HW queue and will be processed first. In case size of HW queue is even more , say 10, then it may contain 10 low priority packets In queue and high priority packets need to wait for that much time till all packets would be put on to the wire.

 

IOS automatically attempts to minimize the impact of the Hardware queue to the IOS queuing tools.  The IOS maintains the original goal of always having a packet in the Hardware queue, available for the interface to immediately send when the interface completes sending the previous packet. When any form of the software queuing tool is enabled on an interface , IOS on lower-end routers typically reduces the size of the Hardware Queue to a small value, often times to a length of 2. The smaller the value the less impact the Tx Queue has on the effects of the queuing method.

 

-------- Please don't forget to rate helpful posts -------

 

Regards,

Akash

amerutoji Thu, 07/31/2014 - 19:18
User Badges:

Hi Akash,

About input queue size on ASR1001 - built-in GE interface:
It shows 375 packets as default size.
For the most latency sensitive traffic that we don't want to delay at all, and with micro-bursts approaching 1gb/s, would you recommend lowering this input queue size? I suspect queuing  here is adding latency for us.
Also, when would counters for "flushes" increase on this platform?
 Input queue: 0/375/0/891 (size/max/drops/flushes); Total output drops: 0

Thanks,

Akash Agrawal Thu, 07/31/2014 - 23:39
User Badges:
  • Cisco Employee,

Hi,

 

The input-queue is used only for software switched packets (destined to RP). Normally these are protocol traffic and traffic like ICMP (destined to router),SNMP.  Your transit voice and data traffic will not be placed in input-queue. Since router is able to process traffic coming with line-rate and device connected with gig link can not send traffic more than the line rate so normally in input direction we don't see buffering of packet. Buffering of transit traffic may happen on outgoing interface and reason is, traffic from multiple interfaces may go out on one interface and router may need to buffer it for some time. 

 

To save voice traffic from bursty data traffic you may use LLQ in out direction and use priority queue for voice traffic. This will help you to reduce queuing latency for latency-sensitive traffic.

 

Regards,

Akash

amerutoji Fri, 08/01/2014 - 09:26
User Badges:

Hi Akash,

About HQF 3-level policy on ASR1001 and policy propagation: I have a physical interface gi0/0/0 with 3 sub-interfaces, each sub-interface has parent policy with shaper for that sub-interface and child policy applied. But, I cannot apply aggregate policy to the physical interface, I get the following error:
#service-policy output AGGREGATE-Gi0/0/0
user-defined classes with queueing features are not allowed in a service-policy at sub-interface/pvc
in conjunction with user-defined classes with queueing features in a service-policy at sub-interface/pvc/pvp

Do you know what this means?

Also, I have child policy like this:
policy-map CHILD-VLAN160
 class DATA-CRITICAL
  police 65000000 325000
  priority level 1
class class-default
  bandwidth 15000
  queue-limit 50 ms
policy-map PARENT-VLAN160
 class class-default
  shape average 90000000 900000
   service-policy CHI-TOK-CHILD-VLAN160

Will the priority level 1 class, with the policer, retain priority all the way out through the physical interface, even w/out policy applied at the physical interface level?

Thanks,

Akash Agrawal Fri, 08/01/2014 - 12:22
User Badges:
  • Cisco Employee,

 

Hi,

 

I think you are trying to configure shaper at sub-interface and physical interface at same time. In that case we get the mentioned error message. You can use Policer on main interface to make it work. I tested in lab with below policy-map and got same error message. Removing shaper from either sub-interface or main interface solves the issue.

 

R6_ASR6#sh policy-map test
  Policy Map test
    Class EF
      bandwidth 450000 (kbps)
      Average Rate Traffic Shaping
      cir 100000000 (bps)
    Class AF12
      bandwidth 200000 (kbps)
    Class class-default
      bandwidth 350000 (kbps)
R6_ASR6#

 

R6_ASR6#sh policy-map test-parent
  Policy Map test-parent
    Class class-default
      Average Rate Traffic Shaping
      cir 900000000 (bps)
R6_ASR6#

 

R6_ASR6#sh policy-map test-phy
  Policy Map test-phy
    Class class-default
      Average Rate Traffic Shaping
      cir 50000000 (bps)
R6_ASR6#

R6_ASR6(config-pmap-c)#int gig1/0/1.100
R6_ASR6(config-subif)#service-policy out test-parent
R6_ASR6(config-subif)#int gig1/0/1
R6_ASR6(config-if)#service-policy out test-phy   
user-defined classes with queueing features are not allowed in a service-policy at sub-interface/pvc
in conjunction with user-defined classes with queueing features in a service-policy at sub-interface/pvc/pvp

R6_ASR6(config-if)#

 

Enter configuration commands, one per line.  End with CNTL/Z.
R6_ASR6(config)#policy-map test-phy
R6_ASR6(config-pmap)#class class-default
R6_ASR6(config-pmap-c)#no shape ave 50000000
R6_ASR6(config-pmap-c)#police 50000000
R6_ASR6(config-pmap-c-police)#
R6_ASR6(config-pmap-c-police)#exit
R6_ASR6(config-pmap-c)#
R6_ASR6(config-pmap-c)#exit
R6_ASR6(config-pmap)#exit
R6_ASR6(config)#int gig1/0/1
R6_ASR6(config-if)#service-policy out test-phy 
R6_ASR6(config-if)#

 

Regards,

Akash

Akash Agrawal Fri, 08/01/2014 - 12:33
User Badges:
  • Cisco Employee,

 

To your second query, yes packet priority will be retained all the way out through the physical interface. That is why queuing on two places(on physical interface and sub-interface) is not allowed.

If in above working service-policy i define min bandwidth in class-default, again i get same error

 

R6_ASR6#show policy-map test-phy
  Policy Map test-phy
    Class class-default
     police cir 50000000 bc 1562500 
       conform-action transmit 
       exceed-action drop 
      bandwidth 500000 (kbps) <<<<<<<< 

 

R6_ASR6(config-if)#service-policy out test-phy
user-defined classes with queueing features are not allowed in a service-policy at sub-interface/pvc
in conjunction with user-defined classes with queueing features in a service-policy at sub-interface/pvc/pvp

R6_ASR6(config-if)#

 

Regards,

Akash

 

 

sumit19851 Fri, 08/01/2014 - 01:11
User Badges:

 

Hello Akash,

 

Thanks for the explanation. I have one more question related to LLQ behavior on ASR1K.

Q. What is difference in strict priority and conditional priority?

 

Akash Agrawal Fri, 08/01/2014 - 01:43
User Badges:
  • Cisco Employee,

 

Hello Sumit,

 

Strict priority will always be rate limited by the explicitly configured policer. With strict priority even if there is bandwidth available from the parent, LLQ class will only forward up to the policed rate.

 

Conditional priority will rate limit traffic with a policer only if there is congestion at the parent (policy-map or physical interface).A conditional priority class can use more than its configured rate but only if there is no contention with other classes in the same policy. As soon as there is congestion at the parent,the priority class(es) will throttle back to the configured rate until there is no longer any congestion.


Strict priority configuration example

policy-map test
 class voice
  police cir 1000000
  priority

 

Conditional priority configuration example

policy-map test
 class voice
  priority 1000

 

-------- Please don't forget to rate helpful posts -------

Regards,

Akash

ip_noc_fm Fri, 08/01/2014 - 04:47
User Badges:

Hello Akash,

 
In HQF images, how much bandwidth will be reserved for the class-default on a 10 Mb/s link where user classes reserve 6 Mb/s of bandwidth ?
 
Regards
Karthik T S
Akash Agrawal Fri, 08/01/2014 - 05:03
User Badges:
  • Cisco Employee,

 

Hi Karthik,

 

HQF behavior is different on software switched platform like 7200 and ISR (uses 2 parameter scheduler) and on platform like ASR1k (uses 3 parameter scheduler)

 

On 7200 and ISR devices, remianing bandwidth (which 4 mb in this case) will be allocated to class-default. In case of ASR1k, no bandwidth will be reserved to class-default rather remaining bandwidth can be accessed  by all classes based in excess-ratio which is by default 1.

 

So if there is 1 user defined class and 1 class-default and both are receiving traffic 10mb on a 10 mb link. Now we have allocated 6 mb to user-defined class and no allocation for remaining 4 mb which will be considered as excess bandwidth. since excess-ratio is 1 for both class, remaining bandwidth will be distributed to both class equally, 2 mb each. So user-defined class will get 6+2 = 8mb and class-default will get 2 mb.

 

In case of 7200,ISR, user-defined class will get 6 mb and class-default will get 4 mb.

 

Regards,

Akash

Actions

This Discussion

Related Content