Nov
29

In this first of a series of blog posts regarding Catalyst QoS, we will exam the AutoQoS capabilities on the 3560 Catalyst devices. AutoQoS allows for the automation of QoS settings for the switch with an absolute minimum of configuration required from the engineer. In particular, the 3560 AutoQoS features automates the classification and congestion management configurations required in VoIP environments. You should note that the 3560 AutoQoS has much “catching up” to do when you compare this feature to AutoQoS for VoIP and AutoQoS for Enterprise that are both now possible in the pure router class of Cisco devices.

First, the easy part. The interface configuration command required for QoS is simply:

auto qos voip [cisco-phone | cisco-softphone | trust]

Notice the auto qos voip command is used in conjunction with keywords that specify what devices to “trust” when it comes to these important VoIP packets. The cisco-phone keyword instructs the AutoQoS feature to only trust and act upon the incoming voice packets if they are truly sent from a Cisco IP Phone. The phone’s presence is detected thanks to CDP. Similarly, the cisco-softphone keyword instructs the device to only trust and act upon the voice packets if they are sent from a Cisco phone running in software on a PC. Finally, the trust keyword instructs the device to trust markings for VoIP packets that are coming from another switch or router over the port.

In order to view the global configuration commands and interface configuration commands your auto qos voip feature will actually create, you can enable debug auto qos on the device before you use the interface configuration command.

Should you need to reverse the effect that AutoQoS has on your device, use no auto qos voip under the interface to remove the interface-level commands. For the global configuration commands,  use no mls qos to render them useless. Notice that you will have to manually remove the actual commands, however.

As a CCIE (or real close), we should be very aware of the guidelines for usage of this Cat QoS feature

  • The feature works on switch or router ports.
  • Be sure to use AutoQoS for VoIP before making changes to the QoS configuration of the device. Should you need to make modifications, it is preferred to then modify the AutoQoS-generated configurations as appropriate.
  • To modify an AutoQoS generated policy-map or aggregate policer, copy the configuration to notepad, make the necessary changes, then remove the previous configuration from your device. Finally, paste in your new configuration.
  • CDP is required on the port for the Cisco IP Phone and Cisco SoftPhone keywords to work properly.

Well, if all of this sounds a bit “too good to be true”, let us make sure it works by turning to the command line of a 3560 Catalyst switch. As you can tell from the hostname of this device, it is been reset to factory defaults and possesses no user-based configuration whatsoever.

Switch#debug auto qos

Auto QoS debugging is on

Switch#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

Switch(config)#interface fa0/10

Switch(config-if)#auto qos voip trust

Switch(config-if)#

*Mar  1 11:30:48.203: mls qos map cos-dscp 0 8 16 24 32 46 48 56

*Mar  1 11:30:48.220: mls qos

*Mar  1 11:30:48.220: no mls qos srr-queue input cos-map

*Mar  1 11:30:48.236: no mls qos srr-queue output cos-map

*Mar  1 11:30:48.245: mls qos srr-queue input cos-map queue 1 threshold 3  0

*Mar  1 11:30:48.253: mls qos srr-queue input cos-map queue 1 threshold 2  1

*Mar  1 11:30:48.261: mls qos srr-queue input cos-map queue 2 threshold 1  2

*Mar  1 11:30:48.261: mls qos srr-queue input cos-map queue 2 threshold 2  4 6 7

*Mar  1 11:30:48.261: mls qos srr-queue input cos-map queue 2 threshold 3  3 5

*Mar  1 11:30:48.270: mls qos srr-queue output cos-map queue 1 threshold 3  5

*Mar  1 11:30:48.270: mls qos srr-queue output cos-map queue 2 threshold 3  3 6 7

*Mar  1 11:30:48.270: mls qos srr-queue output cos-map queue 3 threshold 3  2 4

*Mar  1 11:30:48.278: mls qos srr-queue output cos-map queue 4 threshold 2  1

*Mar  1 11:30:48.278: mls qos srr-queue output cos-map queue 4 threshold 3  0

*Mar  1 11:30:48.278: no mls qos srr-queue input dscp-map

*Mar  1 11:30:48.295: no mls qos srr-queue output dscp-map

*Mar  1 11:30:48.312: mls qos srr-queue input dscp-map queue 1 threshold 2  9 10 11 12 13 14 15

*Mar  1 11:30:48.320: mls qos srr-queue input dscp-map queue 1 threshold 3  0 1 2 3 4 5 6 7

*Mar  1 11:30:48.320: mls qos srr-queue input dscp-map queue 1 threshold 3  32

*Mar  1 11:30:48.329: mls qos srr-queue input dscp-map queue 2 threshold 1  16 17 18 19 20 21 22 23

*Mar  1 11:30:48.329: mls qos srr-queue input dscp-map queue 2 threshold 2  33 34 35 36 37 38 39

*Mar  1 11:30:48.337: mls qos srr-queue input dscp-map queue 2 threshold 2  48 49 50 51 52 53 54 55

*Mar  1 11:30:48.337: mls qos srr-queue input dscp-map queue 2 threshold 2  56 57 58 59 60 61 62 63

*Mar  1 11:30:48.337: mls qos srr-queue input dscp-map queue 2 threshold 3  24 25 26 27 28 29 30 31

*Mar  1 11:30:48.345: mls qos srr-queue input dscp-map queue 2 threshold 3  40 41 42 43 44 45 46 47

*Mar  1 11:30:48.345: mls qos srr-queue output dscp-map queue 1 threshold 3  40 41 42 43 44 45 46 47

*Mar  1 11:30:48.354: mls qos srr-queue output dscp-map queue 2 threshold 3  24 25 26 27 28 29 30 31

*Mar  1 11:30:48.354: mls qos srr-queue output dscp-map queue 2 threshold 3  48 49 50 51 52 53 54 55

*Mar  1 11:30:48.354: mls qos srr-queue output dscp-map queue 2 threshold 3  56 57 58 59 60 61 62 63

*Mar  1 11:30:48.362: mls qos srr-queue output dscp-map queue 3 threshold 3  16 17 18 19 20 21 22 23

*Mar  1 11:30:48.362: mls qos srr-queue output dscp-map queue 3 threshold 3  32 33 34 35 36 37 38 39

*Mar  1 11:30:48.371: mls qos srr-queue output dscp-map queue 4 threshold 1  8

*Mar  1 11:30:48.371: mls qos srr-queue output dscp-map queue 4 threshold 2  9 10 11 12 13 14 15

*Mar  1 11:30:48.371: mls qos srr-queue output dscp-map queue 4 threshold 3  0 1 2 3 4 5 6 7

*Mar  1 11:30:48.379: no mls qos srr-queue input priority-queue 1

*Mar  1 11:30:48.396: no mls qos srr-queue input priority-queue 2

*Mar  1 11:30:48.396: mls qos srr-queue input bandwidth 90 10

*Mar  1 11:30:48.404: mls qos srr-queue input threshold 1 8 16

*Mar  1 11:30:48.404: mls qos srr-queue input threshold 2 34 66

*Mar  1 11:30:48.404: mls qos srr-queue input buffers 67 33

*Mar  1 11:30:48.412: mls qos queue-set output 1 threshold 1 138 138 92 138

*Mar  1 11:30:48.412: mls qos queue-set output 1 threshold 2 138 138 92 400

*Mar  1 11:30:48.412: mls qos queue-set output 1 threshold 3 36 77 100 318

*Mar  1 11:30:48.421: mls qos queue-set output 1 threshold 4 20 50 67 400

*Mar  1 11:30:48.421: mls qos queue-set output 1 buffers 10 10 26 54

*Mar  1 11:30:48.429: mls qos queue-set output 2 threshold 1 149 149 100 149

*Mar  1 11:30:48.429: mls qos queue-set output 2 threshold 2 118 118 100 235

*Mar  1 11:30:48.429: mls qos queue-set output 2 threshold 3 41 68 100 272

*Mar  1 11:30:48.438: mls qos queue-set output 2 threshold 4 42 72 100 242

*Mar  1 11:30:48.438: mls qos queue-set output 2 buffers 16 6 17 61

*Mar  1 11:30:48.480:   mls qos trust cos

*Mar  1 11:30:48.496:  no queue-set 1

*Mar  1 11:30:48.505:  priority-queue out

*Mar  1 11:30:48.505:  srr-queue bandwidth share 10 10 60 20

Switch(config-if)#

“Holy automation Batman!” Yes, AutoQoS on the Catalyst just got real busy for us ensuring that your fragile voice packets receive the proper classification and queuing treatment. In fact, this article certainly serves as a nice preview of blog posts to come…

Switch#debug auto qos
Auto QoS debugging is on
Switch#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Switch(config)#interface fa0/10
Switch(config-if)#auto qos voip trust
Switch(config-if)#
*Mar  1 11:30:48.203: mls qos map cos-dscp 0 8 16 24 32 46 48 56
*Mar  1 11:30:48.220: mls qos
*Mar  1 11:30:48.220: no mls qos srr-queue input cos-map
*Mar  1 11:30:48.236: no mls qos srr-queue output cos-map
*Mar  1 11:30:48.245: mls qos srr-queue input cos-map queue 1 threshold 3  0
*Mar  1 11:30:48.253: mls qos srr-queue input cos-map queue 1 threshold 2  1
*Mar  1 11:30:48.261: mls qos srr-queue input cos-map queue 2 threshold 1  2
*Mar  1 11:30:48.261: mls qos srr-queue input cos-map queue 2 threshold 2  4 6 7
*Mar  1 11:30:48.261: mls qos srr-queue input cos-map queue 2 threshold 3  3 5
*Mar  1 11:30:48.270: mls qos srr-queue output cos-map queue 1 threshold 3  5
*Mar  1 11:30:48.270: mls qos srr-queue output cos-map queue 2 threshold 3  3 6 7
*Mar  1 11:30:48.270: mls qos srr-queue output cos-map queue 3 threshold 3  2 4
*Mar  1 11:30:48.278: mls qos srr-queue output cos-map queue 4 threshold 2  1
*Mar  1 11:30:48.278: mls qos srr-queue output cos-map queue 4 threshold 3  0
*Mar  1 11:30:48.278: no mls qos srr-queue input dscp-map
*Mar  1 11:30:48.295: no mls qos srr-queue output dscp-map
*Mar  1 11:30:48.312: mls qos srr-queue input dscp-map queue 1 threshold 2  9 10 11 12 13 14 15
*Mar  1 11:30:48.320: mls qos srr-queue input dscp-map queue 1 threshold 3  0 1 2 3 4 5 6 7
*Mar  1 11:30:48.320: mls qos srr-queue input dscp-map queue 1 threshold 3  32
*Mar  1 11:30:48.329: mls qos srr-queue input dscp-map queue 2 threshold 1  16 17 18 19 20 21 22 23
*Mar  1 11:30:48.329: mls qos srr-queue input dscp-map queue 2 threshold 2  33 34 35 36 37 38 39
*Mar  1 11:30:48.337: mls qos srr-queue input dscp-map queue 2 threshold 2  48 49 50 51 52 53 54 55
*Mar  1 11:30:48.337: mls qos srr-queue input dscp-map queue 2 threshold 2  56 57 58 59 60 61 62 63
*Mar  1 11:30:48.337: mls qos srr-queue input dscp-map queue 2 threshold 3  24 25 26 27 28 29 30 31
*Mar  1 11:30:48.345: mls qos srr-queue input dscp-map queue 2 threshold 3  40 41 42 43 44 45 46 47
*Mar  1 11:30:48.345: mls qos srr-queue output dscp-map queue 1 threshold 3  40 41 42 43 44 45 46 47
*Mar  1 11:30:48.354: mls qos srr-queue output dscp-map queue 2 threshold 3  24 25 26 27 28 29 30 31
*Mar  1 11:30:48.354: mls qos srr-queue output dscp-map queue 2 threshold 3  48 49 50 51 52 53 54 55
*Mar  1 11:30:48.354: mls qos srr-queue output dscp-map queue 2 threshold 3  56 57 58 59 60 61 62 63
*Mar  1 11:30:48.362: mls qos srr-queue output dscp-map queue 3 threshold 3  16 17 18 19 20 21 22 23
*Mar  1 11:30:48.362: mls qos srr-queue output dscp-map queue 3 threshold 3  32 33 34 35 36 37 38 39
*Mar  1 11:30:48.371: mls qos srr-queue output dscp-map queue 4 threshold 1  8
*Mar  1 11:30:48.371: mls qos srr-queue output dscp-map queue 4 threshold 2  9 10 11 12 13 14 15
*Mar  1 11:30:48.371: mls qos srr-queue output dscp-map queue 4 threshold 3  0 1 2 3 4 5 6 7
*Mar  1 11:30:48.379: no mls qos srr-queue input priority-queue 1
*Mar  1 11:30:48.396: no mls qos srr-queue input priority-queue 2
*Mar  1 11:30:48.396: mls qos srr-queue input bandwidth 90 10
*Mar  1 11:30:48.404: mls qos srr-queue input threshold 1 8 16
*Mar  1 11:30:48.404: mls qos srr-queue input threshold 2 34 66
*Mar  1 11:30:48.404: mls qos srr-queue input buffers 67 33
*Mar  1 11:30:48.412: mls qos queue-set output 1 threshold 1 138 138 92 138
*Mar  1 11:30:48.412: mls qos queue-set output 1 threshold 2 138 138 92 400
*Mar  1 11:30:48.412: mls qos queue-set output 1 threshold 3 36 77 100 318
*Mar  1 11:30:48.421: mls qos queue-set output 1 threshold 4 20 50 67 400
*Mar  1 11:30:48.421: mls qos queue-set output 1 buffers 10 10 26 54
*Mar  1 11:30:48.429: mls qos queue-set output 2 threshold 1 149 149 100 149
*Mar  1 11:30:48.429: mls qos queue-set output 2 threshold 2 118 118 100 235
*Mar  1 11:30:48.429: mls qos queue-set output 2 threshold 3 41 68 100 272
*Mar  1 11:30:48.438: mls qos queue-set output 2 threshold 4 42 72 100 242
*Mar  1 11:30:48.438: mls qos queue-set output 2 buffers 16 6 17 61
*Mar  1 11:30:48.480:   mls qos trust cos
*Mar  1 11:30:48.496:  no queue-set 1
*Mar  1 11:30:48.505:  priority-queue out
*Mar  1 11:30:48.505:  srr-queue bandwidth share 10 10 60 20
Switch(config-if)#

You can leave a response, or trackback from your own site.

5 Responses to “Catalyst QoS: AutoQoS”

 
  1. Chad Spears says:

    Hi-

    Just a quick question about QoS that i have been stumped on for awhile now. We currently use AutoQoS on all of our access switches which have Cisco VoIP clients, and as your article shows this is a very very powerful macro! It is great! My question is about the uplink ports, will this work just the same with uplink ports or should I be manually applying the “mls qos trust cos | dscp” command? As always thanks!

    CS

    • @Chad

      Hello my friend! Great question – sticking with the 3560 as the example platform – we configure auto qos voip cisco-phone on the access port connecting to the Cisco IP Phone, then we configure auto qos voip trust on the uplink port.

  2. Mark Johnson says:

    Hi,

    As usual, great content on the CCIE Blog, a couple of questions on Auto QoS with relation to non-Cisco IP phones and Service Policies.

    With regards to the non-Cisco IP phone, is it recommended to use just auto qos trust voip? As with CDP do you think Cisco will develop (Or is it already) LLDP for non-Cisco IP endpoints?

    Obviously when you complete the auto qos trust cisco-phone a service-policy is applied to the interface, is it still recommended to apply one for non-Cisco IP phones? Also the service-policy references IP ACL’s, if the interface is layer two (Typical voice and data vlan) set up, will the IP ACL’s be actioned upon for classification and marking?

    Regards,

    Mark

  3. Damian says:

    En primer lugar, muy buen Blog, segundo, tengo que implementar en una lan switcheada softphone no cisco y queria saber si el auto qos voip softphone sirve para estos softphone, desde ya muchas gracias

    • Hi Damian,

      If I understood your question properly, then the answer is No, non-Cisco switches don’t support Auto-QoS, however they may (depending on the brand of switch) may or may not support some QoS capabilities.

      Kind Regards,
      Mark

 

Leave a Reply

Categories

CCIE Bloggers