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
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.
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…