Introduction
The objective of this post is to collect the common error messages that we get when configuring QoS features on Catalyst 3850 series switches. The examples were done using IOS XE version 03.03.05SE.
Prerequisites
Understanding of Modular Quality of Service (QoS) Command-Line Interface (CLI) (MQC) configuration on Catalyst 3850 switches.
Requirements
There are no specific requirements for this document.
Components Used
The information in this document is based on Cisco Catalyst 3850 Series Switches.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with default configuration. If your network is live, make sure that you understand the potential impact of any command.
Class-maps
% Empty classes are not supported
Example:
class-map match-any realtime
class-map match-any priority
class-map match-any missioncritical
class-map match-any transactional
class-map match-any scavenger
OR
policy-map Edge-QoS
class realtime
class priority
class missioncritical
class transactional
class scavenger
class class-default
3850(config-pmap-c)#interface Gi 1/0/1
3850(config-if)#service-policy input Edge-QoS
3850(config-if)#
*Mar 11 09:12:59.897: Empty class unsupported
Restriction(s):
- Class maps with no match statements are not supported
- Class maps with empty actions are not supported
Workaround:
- Use of table-maps under the class-default and remove the empty class
- CSCun54503 removed empty class check in IOS and FED. Fixed in IOS XE verison 3.6.1 and newer.
% Range command terminated because it failed on GigabitEthernet1/0/1
Example:
int range Gi1/0/1 - 24
service-policy input queueing
% Range command terminated because it failed on GigabitEthernet1/0/1
Restriction(s): None
Workaround:
- There is an error while configuring QoS, try on a single interface and see what error is seen.
- No input queueing permitted on ingress
Queueing
% Queuing actions supported only with dscp/cos/qos-group/precedence based classification!!!
Example:
access-list 150 permit ip 172.16.2.0 0.0.0.255 172.16.1.0 0.0.0.255
class-map match-any san_traffic
match access-group 150
class-map match-any non-client-nrt-class
match non-client-nrt
!
policy-map port_child_policy
class non-client-nrt-class
bandwidth remaining ratio 10
class class-default
shape average percent 10
service-policy port_child_policy
Restriction(s): The same as the error message
Workaround:
- Two options were given, either to create an input policy to set DSCP marking to ingress traffic matching the ACL or,
- Use policy rate feature instead of queueing.
% queue-limit is only supported in percent on this platform
Example:
class-map queue
queue-limit cos 1 2 3 4
Restriction(s):
- There is only one COS value valid per queue-limit statement, the parameter after the first value should be a percent value.
Workaround:
- Distribute the cos values on several queue-limit statements.
class-map queue5
queue-limit cos 1 percent 10
queue-limit cos 2 percent 20
queue-limit cos 3 percent 30
queue-limit cos 4 percent 40
% Order of classes in policy name queueing is not consistent with installed policy
Example:
!Creating class-maps queue1 and queue2
class-map queue1
match cos 5
match dscp 46
class-map queue2
match cos 2 4 3 6
match dscp 16 18 20 22 26 32 34 36
!Assigning queueing features to queue1 and queue2
policy-map queueing
class queue1
shape average percent 70
class queue2
bandwidth remaining percent 10
!Applying the policy-map queueing to interface Gi1/0/1
interface gi1/0/1
service policy output queueing
!Creating class-maps queue5 and queue6
class-map queue5
match cos 1
match dscp 8 10 12 14
class-map queue6
match cos 5
match dscp 46
!Assigning queueing features to queue5 and queue6
policy-map queueing2
class queue5
shape average percent 70
class queue2
bandwidth remaining percent 10
!Applying the policy-map queueing to interface Gi1/0/2
interface gi1/0/2
service policy output queueing2
% Order of classes in policy name queueing2 is not consistent with installed policy
Restriction(s):
- The classification sequence for all wired queuing-based policies should be the same across all wired upstream ports (TenGigabit Ethernet), and the same for all downstream wired ports (Gigabit Ethernet).
Workaround:
- Use the same order of the classes as the first configured queueing-based policy-map. This message is not shown if you apply the policy map on any interface of 10GE Module
% Only one queue-limit type is allowed in a class.
Example:
policy-map port-queue
class dscp-1-2-3
bandwidth percent 20
queue-limit dscp 1 percent 80
queue-limit dscp 2 percent 90
queue-limit cos 3 percent 100 <<<
Workaround:
- Configure two different classes, one for queue-limit using DSCP and a second one for queue-limit using COS
Shaping
% shape average command is not supported for this interface
Example:
class-map queue5
match cos 1
match dscp 8 10 12 14
class-map queue6
match cos 5
match dscp 46
policy-map queueing2
class queue5
shape average percent 70
class queue2
bandwidth remaining percent 10
interface gi1/0/1
service policy input queueing2
Restriction(s):
- No queueing actions allowed on ingress.
Workaround:
- None, just marking and policing actions are permitted on ingress. Only one input queue per port.
Table-maps
% Cannot be deleted. Tablemap being used in policy maps.
Example:
3850(config-if)#auto qos voip trust
% Cannot be deleted. Tablemap being used in policy maps.
AutoQoS Error while generating commands on Gi1/0/3.
sh run
-- Output ommited
policy-map WAN-QoS
class class-default
shape average percent 20
service-policy VoIP-QoS
-- Output ommited
interface GigabitEthernet1/0/1
service-policy out WAN-QoS <- Queueing-based policy already attach to other interface in the same stream
Restriction(s):
- The classification sequence for all wired queuing-based policies should be the same across all wired upstream ports (10-Gigabit Ethernet), and the same for all downstream wired ports (1-Gigabit Ethernet).
- Only one table map is supported per wired port, per direction.
- Since there is already a queueing-based policy map on another interface, when trying to remove or add a different queuing-based, it will fail.
- Expected behavior per bug CSCtz51125 .
Workaround:
- Remove the old queueing-based policy map on all the interfaces in the same stream (10GE or 1GE interfaces).
- Applying the new queueing-based policy should not cause further issues.
% Multiple table-maps not supported per target per direction
Example:
policy map bw-with-table
class class-default
bandwidth percent 10
set cos dscp table default
set dscp dscp table default
int gig2/0/1
service-policy output bw-with-table
Restriction(s):
- The CLI is block for the flat policy-map when the policy-map attach to the interface, but not for the child policy on images prior to 03.03.00SE per CSCuc91333 .
Workaround:
- one table-map per policy is supported for the wired ports.
% Priority feature is not allowed in police action with table-map
% Table-map action not allowed in police used with priority feature
Example:
policy-map priority-rate
class priority-one
priority level 1
police cir 256000 conform-action transmit exceed-action set-dscp-transmit dscp table test
Restriction(s):
- The combination of the priority queue and a policing action of setting the DSCP/COS/IPP value by means of a table-map is unsupported on this platform.
Workaround:
- Try removing the "exceed-action set-dscp-transmit" line and instead set it as a drop action and then re-apply the policy-map.
% Only markdown with a table-map is supported
Example:
Policy-map my-policy
class voip_signal
set dscp cs2
police cir 32000 bc 8000
conform-action transmit
exceed-action set-dscp-transmit cs3
Restriction(s):
- A table map is needed when trying to change the DSCP/COS/IPP value dynamically by means of a policer whenever the rate is exceeded.
Workaround:
- Create a table map with the markdown values desired and apply it to the policy-map when the rate is exceeded.
table-map CS2toCS3
map from 24 to 16
default copy
policy-map my-policy
class voip_signal
set dscp cs2
police cir 32000 bc 8000
conform-action transmit
exceed-action set-dscp-transmit default dscp table CS2toCS3
Policing
%1rate-3color policer not supported
Example:
policy-map CiscoPhone-Input-Policy
Class Voip-Data-Class
set ip dscp ef
police cir 256000 bc 16000 be 16000
conform-action transmit
exceed-action set-dscp-transmit dscp table policed-dscp
violate-action drop
Restriction:
- Only 1 rate 2 color and 2 rate 3 color policers are supported on this platform.
Workaround:
- Configure a PIR value to use a 2-rate 3-color policer or remove the 'be' value and the violate action to configure an 1-rate 2-color policer.
policy-map CiscoPhone-Input-Policy
Class Voip-Data-Class
set ip dscp ef
police cir 256000 bc 16000 pir 512000 be 16000
conform-action transmit
exceed-action set-dscp-transmit dscp table policed-dscp
violate-action drop