Date created: 08/28/15 16:58:07. Last modified: 07/24/18 14:36:06

6500/7600 QoS on LAN Cards (WS-X67xx & RSP720-3CXL)

References:

http://www.cisco.com/c/en/us/td/docs/ios/qos/command/reference/qos_book/qos_n1.html
http://www.cisco.com/c/en/us/td/docs/routers/7600/ios/15S/configuration/guide/7600_15_0s_book/qos.html
http://www.cisco.com/c/en/us/products/collateral/switches/catalyst-6500-series-switches/white_paper_c11_538840.pdf
https://ciscoqos.wordpress.com/tag/7600/
https://supportforums.cisco.com/document/71201/switch-fabric-troubleshooting-tips
http://www.cisco.com/c/en/us/products/collateral/switches/catalyst-6500-series-switches/prod_white_paper0900aecd80673385.html
https://supportforums.cisco.com/document/106806/output-drops-input-queue-drops-hold-queues

Contents

MLS QoS
Features and Limitations
Queues and Congestion
Line Cards and Queues
Ports, ASICs and Fabric Connections
WRR/DWRR, Queuing and Congestion Configuration
Erros
Show Commands

MLS QoS:

Enabling "mls qos" globally without any further configuration is usually more harmful to the routers operation than leaving MLS QoS disabled. As soon as MLS QoS is enabled two issues arise (from cisco.com):

-With PFC QoS globally enabled, the default trust state of the Ethernet ports in the system is untrusted. The untrusted port state sets the QoS priority of all traffic flowing through the switch to the port CoS value (zero by default): all traffic will be zero-priority traffic.

-With PFC QoS globally enabled, the port buffers are allocated into CoS-based queues and only part of the buffer is available for zero-priority traffic: zero-priority traffic has less buffer available than when PFC QoS is disabled.

One needs to also take into consideration if the PFC is to run in short pipe mode or uniform mode, in short pipe mode for example on an ingress MPLS LER a 7600 can not manipulate/re-write/set DSCP or ToS markings on an IP packet. An MPLS label is pushed on and only the EXP bits can be set. Uniform mode is enabled via the global config command "mls mpls qos input uniform-mode":
http://www.cisco.com/c/en/us/td/docs/routers/7600/ios/15S/configuration/guide/7600_15_0s_book/mplsqos.html#64181
http://www.cisco.com/c/en/us/td/docs/routers/7600/ios/15S/configuration/guide/7600_15_0s_book/mplsqos.html#pgfId-1405948

Features and Limitations:

In PFC QoS, ports need to be in a trust state, which means that markings on incoming packets are accepted as valid and used as the basis of the initial internal DSCP value. Ports are untrusted by default, which sets the initial internal DSCP value to zero. You can configure ports to trust received CoS, IP precedence, or DSCP...Layer 3 DSCP-based queue mapping is available only on WS-X6708-10GE ports.

Ingressing packets set the initial internal DSCP value based on the CoS value (in trust CoS state), DSCP value (in trust DSCP state), IP precedence value (in trust IP precedence state), or internal DSCP 0 in no-trust state.

During processing, PFC QoS represents the priority of all traffic (including non-IP traffic) with an internal DSCP value. On the PFC, before any marking or policing takes place, PFC QoS derives the initial internal DSCP value as follows:

  • From received CoS values or from port CoS values for trust CoS traffic.
  • Mapped from received IP precedence values for trust IP precedence traffic.
  • From received DSCP values for trust DSCP traffic.
  • Mapped from port CoS or DSCP values configured in policy maps for untrusted traffic.


For trust CoS traffic and trust IP precedence traffic, PFC QoS uses configurable maps to derive the internal 6-bit DSCP value from CoS or IP precedence, which are 3-bit values.

Ingress LAN port classification, marking, and congestion avoidance use Layer 2 CoS values only and do not use or set Layer 3 IP precedence or DSCP values.

On ports configured to trust CoS, PFC QoS does the following:

  • PFC QoS maps the received CoS value in tagged trust CoS traffic to the initial internal DSCP value.
  • PFC QoS maps the ingress port CoS value applied to untagged trusted traffic to the initial internal DSCP value.
  • Note A policy map can change the trust state of the traffic after it enters the router and use received IP precedence or DSCP as the basis of the initial internal DSCP value.
  • PFC QoS enables the CoS-based ingress queues and thresholds to provide congestion avoidance.


On ports configured to trust IP Presedence, PFC QoS does the following:

For traffic from trust IP precedence ports, PFC QoS maps the received IP precedence value to the initial internal DSCP value, unless there is a policy map that changes the trust state of the traffic. Because the ingress port queues and thresholds use Layer 2 CoS, PFC QoS does not implement ingress port congestion avoidance on ports configured to trust IP precedence.

On ports configured to trust DSCP, PFC QoS does the following:

For traffic from trust DSCP ports, PFC QoS uses the received DSCP value as the initial internal DSCP value, unless there is a policy map that changes the trust state of the traffic. Because the ingress port queues and thresholds use Layer 2 CoS, PFC QoS does not implement ingress port congestion avoidance on ports configured to trust DSCP.

 

Enhanced Egress-QoS Filtering

By default when an ingress QoS policy remarks the IP Precedence or DSCP value on layer 3 traffic, applied to a layer 3 interface, any egress QoS policies based on IP Precedence or DSCP will be made using the original ingress value before the ingress policy re-marked it. To allow egress policies to act on the remarked value add the interface level command "platform ip features sequential" to the ingress interface where the layer 3 traffic enters and the ingress QoS policy that remarks the traffic is applied.

 

Queues and Congestion:

PFC QoS implements congestion avoidance on trust CoS ports. On a trust CoS port, QoS classifies the traffic on the basis of its Layer 2 CoS value and assigns it to an ingress queue to provide congestion avoidance.

The Cisco 7600 series router LAN modules support the following types of queues:
- Standard queues
- Strict-priority queues

The Cisco 7600 series router LAN modules support the following types of scheduling algorithms between queues:
- Weighted Round Robin (WRR)
- Deficit weighted round robin (DWRR)
- Strict-priority queueing

The Cisco 7600 series router LAN modules provides congestion avoidance with these types of thresholds within a queue:
- Weighted Random Early Detection (WRED)
- Tail-drop thresholds

When configuring thresholds, note the following information:
- Queue number 1 is the lowest-priority standard queue.
- Higher-numbered queues are higher priority standard queues.

When you configure multiple-threshold standard queues, note the following information:
- The first percentage that you enter sets the lowest-priority threshold.
- The second percentage that you enter sets the next highest-priority threshold.
- The last percentage that you enter sets the highest-priority threshold.
- The percentages range from 1 to 100. A value of 10 indicates a threshold when the buffer is 10-percent full.
- Always set highest-numbered threshold to 100 percent.

When configuring the WRED-drop thresholds, note the following information:
- Each WRED-drop threshold has a low-WRED and a high-WRED value.
- Low-WRED and high-WRED values are a percentage of the queue capacity (the range is from 1 to 100).
- The low-WRED value is the traffic level under which no traffic is dropped. The low-WRED value must be lower than the high-WRED value.
- The high-WRED value is the traffic level above which all traffic is dropped.
- Traffic in the queue between the low- and high-WRED values has an increasing chance of being dropped as the queue fills.

 

Line Cards and Queues:

RSP720-3CXL-10GE (With Gigabit Ethernet ports enabled):
Ingress Queue and Drop Thresholds: 2q4t
Ingress Queue Scheduler: WRR
Egress Queue and Drop Thresholds: 1p3q4t
Egress Queue Scheduler: DWRR or SRR
Total Buffer Size:
Ingress Buffer Size: 108 MB
Egress Buffer Size: 98 MB

WS-X6748-GE-TX & WS-X6748-SFP with CFC:
Ingress Queue and Drop Thresholds: 1q8t
Ingress Queue Scheduler: WRR
Egress Queue and Drop Thresholds: 1p3q8t
Egress Queue Scheduler: DWRR
Total Buffer Size: 1.3 MB
Ingress Buffer Size: 166 KB
Egress Buffer Size: 1.2 MB

WS-X6704-10GE with CFC:
Ingress Queue and Drop Thresholds: 1q8t
Ingress Queue Scheduler: WRR
Egress Queue and Drop Thresholds: 1p7q8t
Egress Queue Scheduler: DWRR
Total Buffer Size: 16 MB
Ingress Buffer Size: 2 MB
Egress Buffer Size: 14 MB


1q8t indicates the following:
- One standard queue with eight configurable tail-drop thresholds.

1p3q8t indicates the following:
– One strict-priority queue
– Three standard queues, each with eight thresholds, each threshold configurable as either WRED-drop or tail-drop


Default Receive-queue Size Percentages:
2q8t
- Low priority: 80%
- High priority: 20%

8q8t
- Lowest priority: 80%
- Intermediate queues: 0%
- Highest priority: 20%


Default Transmit-Queue Size Percentages:
1p3q8t
- Low priority: 50%
- Medium priority: 20%
- High priority: 15%
- Strict priority 15%


Default Bandwidth Allocation Ratios:
- 2q8t - 10:90
- 1p3q8t - 22:33:45
- 1p7q8t - 22:33:45:0:0:0:0

Default Drop-Threshold Percentages and CoS Value Mappings:
The following tables lists the default values when you configure mls qos and mls qos trust cos

- 1q8t Receive Queues

	Standard receive queue

			Threshold 1
			        CoS    0 
					Tail-drop	50%
					WRED-drop	Not supported
			Threshold 2
			        CoS	None
					Tail-drop	50%
					WRED-drop	Not supported
			Threshold 3
					CoS	1, 2, 3, 4 
					Tail-drop	60%
					WRED-drop	Not supported
			Threshold 4
					CoS	None
					Tail-drop	60%
					WRED-drop	Not supported
			Threshold 5
					CoS	6 and 7
					Tail-drop	80%
					WRED-drop	Not supported
			Threshold 6
					CoS	None
					Tail-drop	80%
					WRED-drop	Not supported
			Threshold 7
					CoS	5
					Tail-drop	100%
					WRED-drop	Not supported
			Threshold 8
					CoS	None
					Tail-drop	100%
					WRED-drop	Not supported

 - 2q8t Receive Queues

	Standard receive queue 1 (low priority)
	
			Threshold 1
					CoS	0 and 1
					Tail-drop	70%
					WRED-drop	Not supported
			Threshold 2
					CoS	2 and 3 
					Tail-drop	80%
					WRED-drop	Not supported
			Threshold 3
					CoS	4 
					Tail-drop	90%
					WRED-drop	Not supported
			Threshold 4
					CoS	6 and 7
					Tail-drop	100%
					WRED-drop	Not supported
			Thresholds 5–8
					CoS	None
					Tail-drop	100%
					WRED-drop	Not supported

	Standard receive queue 2 (high priority)

			Threshold 1
					CoS	5
					Tail-drop	100%
					WRED-drop	Not supported
			Thresholds 2–8
					CoS	None
					Tail-drop	100%
					WRED-drop	Not supported


 - 1p3q8t Transmit Queues

	Standard transmit queue 1(lowest priority)
			Threshold 1
					CoS	0 
					Tail-drop	Disabled; 70%
					WRED-drop	Enabled; 40% low, 70% high
			Threshold 2
					CoS	1 
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Threshold 3
					CoS	None 
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Threshold 4
					CoS	None 
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Thresholds 5–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 50% low, 100% high

	Standard transmit queue 2 (medium priority)
			Threshold 1
					CoS	2 
					Tail-drop	Disabled; 70%
					WRED-drop	Enabled; 40% low, 70% high
			Threshold 2
					CoS	3 and 4 
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Thresholds 3–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high

	Standard transmit queue 3 (high priority)
			Threshold 1
					CoS	6 and 7
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Thresholds 2–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high

	Strict-priority transmit queue
					CoS	5
					Tail-drop	100% (nonconfigurable)

 - 1p7q8t Transmit Queues

	Standard transmit queue 1 (lowest priority)
			Threshold 1
					CoS	0 
					Tail-drop	Disabled; 70%
					WRED-drop	Enabled; 40% low, 70% high
			Threshold 2
					CoS	1 
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Thresholds 3–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high

	Standard transmit queue 2 (intermediate priority)
				Threshold 1
					CoS	2 
					Tail-drop	Disabled; 70%
					WRED-drop	Enabled; 40% low, 70% high
			Threshold 2
					CoS	3 and 4 
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Thresholds 3–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high

	Standard transmit queue 3 (intermediate priority)
			Threshold 1
					CoS	6 and 7
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 70% low, 100% high
			Thresholds 2–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 100% low, 100% high

	Standard transmit queues 4–7 (intermediate priorities)
			Thresholds 1–8
					CoS	None
					Tail-drop	Disabled; 100%
					WRED-drop	Enabled; 100% low, 100% high

	Strict-priority transmit queue
					CoS	5
					Tail-drop	100% (nonconfigurable)

Default queue and threshold allocations when "mls qos" is disabled:

QoS is disabled globally
Trust boundary disabled

Trust state: trust DSCP
Extend trust state: not trusted [COS = 0]
Default COS is 0
Queueing Mode In Tx direction: mode-cos
Transmit queues [type = 1p3q8t]:
Queue Id Scheduling Num of thresholds
-----------------------------------------
01 WRR 08
02 WRR 08
03 WRR 08
04 Priority 01

WRR bandwidth ratios: 100[queue 1] 0[queue 2] 0[queue 3]
queue-limit ratios: 100[queue 1] 0[queue 2] 0[queue 3] 0[Pri Queue]

queue tail-drop-thresholds
--------------------------
1 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
2 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
3 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

queue random-detect-min-thresholds
----------------------------------
1 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
2 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
3 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

queue random-detect-max-thresholds
----------------------------------
1 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
2 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
3 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

WRED disabled queues: 1 2 3

queue thresh cos-map
---------------------------------------
1 1 0 1 2 3 4 5 6 7
1 2
1 3
1 4
1 5
1 6
1 7
1 8
2 1
2 2
2 3
2 4
2 5
2 6
2 7
2 8
3 1
3 2
3 3
3 4
3 5
3 6
3 7
3 8
4 1

Queueing Mode In Rx direction: mode-cos
Receive queues [type = 1q8t]:
Queue Id Scheduling Num of thresholds
-----------------------------------------
01 WRR 08

WRR bandwidth ratios: 100[queue 1]
queue-limit ratios: 100[queue 1]

queue tail-drop-thresholds
--------------------------
1 100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

queue thresh cos-map
---------------------------------------
1 1 0 1 2 3 4 5 6 7
1 2
1 3
1 4
1 5
1 6
1 7
1 8


Packets dropped on Transmit:
BPDU packets: 0

queue dropped [cos-map]
---------------------------------------------

1 0 [0 1 2 3 4 5 6 7 ]

Packets dropped on Receive:
BPDU packets: 0

queue dropped [cos-map]
---------------------------------------------
1 0 [0 1 2 3 4 5 6 7 ]

An existing configuration that is dropping packets in TX queue 1:

7606-6#show run int gi2/17
interface GigabitEthernet2/17
 load-interval 30
 wrr-queue bandwidth 5 25 70 
 wrr-queue queue-limit 5 25 40 
 wrr-queue random-detect min-threshold 3 50 60 70 80 90 100 100 100 
 wrr-queue random-detect max-threshold 1 100 100 100 100 100 100 100 100 
 wrr-queue random-detect max-threshold 2 100 100 100 100 100 100 100 100 
 wrr-queue random-detect max-threshold 3 60 70 80 90 100 100 100 100 
 mls qos trust dscp


 7606-S(config-if)#do show mls qos queuing int gi2/17
  Weighted Round-Robin
  Port QoS is enabled
  Trust state: trust DSCP
  Extend trust state: not trusted [COS = 0]
  Default COS is 0
    Queueing Mode In Tx direction: mode-cos
    Transmit queues [type = 1p3q8t]:
    Queue Id    Scheduling  Num of thresholds
    -----------------------------------------
       01         WRR                 08
       02         WRR                 08
       03         WRR                 08
       04         Priority            01

    WRR bandwidth ratios:    5[queue 1]  25[queue 2]  70[queue 3] 
    queue-limit ratios:      5[queue 1]  25[queue 2]  40[queue 3]  15[Pri Queue]

    queue tail-drop-thresholds
    --------------------------
    1     70[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8] 
    2     70[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8] 
    3     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8] 

    queue random-detect-min-thresholds
    ----------------------------------
      1    40[1] 70[2] 70[3] 70[4] 70[5] 70[6] 70[7] 70[8] 
      2    40[1] 70[2] 70[3] 70[4] 70[5] 70[6] 70[7] 70[8] 
      3    50[1] 60[2] 70[3] 80[4] 90[5] 100[6] 100[7] 100[8] 

    queue random-detect-max-thresholds
    ----------------------------------
      1    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8] 
      2    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8] 
      3    60[1] 70[2] 80[3] 90[4] 100[5] 100[6] 100[7] 100[8] 

    WRED disabled queues:    

    queue thresh cos-map
    ---------------------------------------
    1     1      0 
    1     2      1 
    1     3      
    1     4      
    1     5      
    1     6      
    1     7      
    1     8      
    2     1      2 
    2     2      3 4 
    2     3      
    2     4      
    2     5      
    2     6      
    2     7      
    2     8      
    3     1      6 7 
    3     2      
    3     3      
    3     4      
    3     5      
    3     6      
    3     7      
    3     8      
    4     1      5 

    Queueing Mode In Rx direction: mode-cos
    Receive queues [type = 1q8t]:
    Queue Id    Scheduling  Num of thresholds
    -----------------------------------------
       01         WRR                 08

    WRR bandwidth ratios:  100[queue 1] 
    queue-limit ratios:    100[queue 1] 

    queue tail-drop-thresholds
    --------------------------
    1     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8] 

    queue thresh cos-map
    ---------------------------------------
    1     1      0 1 2 3 4 5 6 7 
    1     2      
    1     3      
    1     4      
    1     5      
    1     6      
    1     7      
    1     8      


  Packets dropped on Transmit:

    queue     dropped  [cos-map]
    ---------------------------------------------
    1                  1069521  [0 1 ]
    2                        0  [2 3 4 ]
    3                        0  [6 7 ]
    4                        0  [5 ]

  Packets dropped on Receive:
    BPDU packets:  0

    queue              dropped  [cos-map]
    ---------------------------------------------------
    1                        0  [0 1 2 3 4 5 6 7 ]



7606-S#show counters interface gi2/17
64 bit counters:
 0.                      rxHCTotalPkts = 339684596451
 1.                      txHCTotalPkts = 134723244974
 2.                    rxHCUnicastPkts = 339670428674
 3.                    txHCUnicastPkts = 134708986327
 4.                  rxHCMulticastPkts = 14167767
 5.                  txHCMulticastPkts = 14258397
 6.                  rxHCBroadcastPkts = 10
 7.                  txHCBroadcastPkts = 254
 8.                         rxHCOctets = 427789252760926
 9.                         txHCOctets = 59162553521112
10.                 rxTxHCPkts64Octets = 4659114504
11.            rxTxHCPkts65to127Octets = 109332708700
12.           rxTxHCPkts128to255Octets = 40878541520
13.           rxTxHCPkts256to511Octets = 8849325424
14.          rxTxHCpkts512to1023Octets = 14359862386
15.         rxTxHCpkts1024to1518Octets = 15480010609
16.                    txHCTrunkFrames = 0
17.                    rxHCTrunkFrames = 0
18.                     rxHCDropEvents = 0

32 bit counters:
 0.                   rxCRCAlignErrors = 0
 1.                   rxUndersizedPkts = 0
 2.                    rxOversizedPkts = 2558251226
 3.                     rxFragmentPkts = 0
 4.                          rxJabbers = 0
 5.                       txCollisions = 0
 6.                         ifInErrors = 0
 7.                        ifOutErrors = 0
 8.                       ifInDiscards = 0
 9.                  ifInUnknownProtos = 0
10.                      ifOutDiscards = 4740385
11.            txDelayExceededDiscards = 0
12.                              txCRC = 0
13.                         linkChange = 21
14.                   wrongEncapFrames = 0
All Port Counters
 1.                          InPackets = 339684592896
 2.                           InOctets = 427789250870818
 3.                        InUcastPkts = 339670425120
 4.                        InMcastPkts = 14167766
 5.                        InBcastPkts = 10
 6.                         OutPackets = 134723242220
 7.                          OutOctets = 59162552895204
 8.                       OutUcastPkts = 134708983574
 9.                       OutMcastPkts = 14258396
10.                       OutBcastPkts = 254
11.                           AlignErr = 0
12.                             FCSErr = 0
13.                            XmitErr = 0
14.                             RcvErr = 0
15.                          UnderSize = 0
16.                          SingleCol = 0
17.                           MultiCol = 0
18.                            LateCol = 0
19.                       ExcessiveCol = 0
20.                       CarrierSense = 0
21.                              Runts = 0
22.                             Giants = 2558250369
23.                         InDiscards = 0
24.                        OutDiscards = 4740385
25.                           InErrors = 0
26.                          OutErrors = 0
27.                    InUnknownProtos = 0
28.                              txCRC = 0
29.                      TrunkFramesTx = 0
30.                      TrunkFramesRx = 0
31.                         WrongEncap = 0
32.     Broadcast_suppression_discards = 0
33.     Multicast_suppression_discards = 0
34.       Unicast_suppression_discards = 0
35.                 rxTxHCPkts64Octets = 4659114474
36.            rxTxHCPkts65to127Octets = 109332705606
37.           rxTxHCPkts128to255Octets = 40878539777
38.           rxTxHCPkts256to511Octets = 8849325267
39.          rxTxHCpkts512to1023Octets = 14359862253
40.         rxTxHCpkts1024to1518Octets = 15480010495
41.                         DropEvents = 0
42.                     CRCAlignErrors = 0
43.                     UndersizedPkts = 0
44.                      OversizedPkts = 2558250365
45.                       FragmentPkts = 0
46.                            Jabbers = 0
47.                         Collisions = 0
48.              DelayExceededDiscards = 0
49.                        bpduOutlost = 0
50.                        qos0Outlost = 4740385
51.                        qos1Outlost = 0
52.                        qos2Outlost = 0
53.                        qos3Outlost = 0
54.                        qos4Outlost = 0
55.                        qos5Outlost = 0
56.                        qos6Outlost = 0
57.                        qos7Outlost = 0
58.                        qos8Outlost = 0
59.                        qos9Outlost = 0
60.                       qos10Outlost = 0
61.                       qos11Outlost = 0
62.                       qos12Outlost = 0
63.                       qos13Outlost = 0
64.                       qos14Outlost = 0
65.                       qos15Outlost = 0
66.                       qos16Outlost = 0
67.                       qos17Outlost = 0
68.                       qos18Outlost = 0
69.                       qos19Outlost = 0
70.                       qos20Outlost = 0
71.                       qos21Outlost = 0
72.                       qos22Outlost = 0
73.                       qos23Outlost = 0
74.                       qos24Outlost = 0
75.                       qos25Outlost = 0
76.                       qos26Outlost = 0
77.                       qos27Outlost = 0
78.                       qos28Outlost = 0
79.                       qos29Outlost = 0
80.                       qos30Outlost = 0
81.                       qos31Outlost = 0
82.                    bpduCbicOutlost = 0
83.                    qos0CbicOutlost = 0
84.                    qos1CbicOutlost = 0
85.                    qos2CbicOutlost = 0
86.                    qos3CbicOutlost = 0
87.                         bpduInlost = 0
88.                         qos0Inlost = 0
89.                         qos1Inlost = 0
90.                         qos2Inlost = 0
91.                         qos3Inlost = 0
92.                         qos4Inlost = 0
93.                         qos5Inlost = 0
94.                         qos6Inlost = 0
95.                         qos7Inlost = 0
96.                         qos8Inlost = 0
97.                         qos9Inlost = 0
98.                        qos10Inlost = 0
99.                        qos11Inlost = 0
100.                        qos12Inlost = 0
101.                        qos13Inlost = 0
102.                        qos14Inlost = 0
103.                        qos15Inlost = 0
104.                        qos16Inlost = 0
105.                        qos17Inlost = 0
106.                        qos18Inlost = 0
107.                        qos19Inlost = 0
108.                        qos20Inlost = 0
109.                        qos21Inlost = 0
110.                        qos22Inlost = 0
111.                        qos23Inlost = 0
112.                        qos24Inlost = 0
113.                        qos25Inlost = 0
114.                        qos26Inlost = 0
115.                        qos27Inlost = 0
116.                        qos28Inlost = 0
117.                        qos29Inlost = 0
118.                        qos30Inlost = 0
119.                        qos31Inlost = 0
120.                         pqueInlost = 0
121.                           Overruns = 0
122.                           maxIndex = 0

When looking at the hold-queue details for 6500/7600 ports, the default input hold-queue for a layer 2 interface is 2000 and the default layer 2 output hold-queue size is 40. The default input hold-queue for a layer 3 interface is 75 and the default layer 3 output hold-queue is 40. Input hold-queue at both Layer 2 and Layer 3 interfaces is using SP and RP I/O memory on the supervisor. The input hold queue parameter is a way to reserve buffers from the RP buffer space and will reserve more space for non-priority data (e.g.ARP) that hits the RP. It will not affect data plane traffic. The output hold queue parameter is only used for traffic processed by CPU too.

! Layer 2 interfacea
#show int gi1/23 | i queue
  Input queue: 0/2000/0/0 (size/max/drops/flushes); Total output drops: 5414
  Output queue: 0/40 (size/max)

! Layer 3 interface
#show int gi2/17 | i queue
  Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 201
  Output queue: 0/40 (size/max)

 

Ports, ASICs and Fabric Connections

In the WS-X6724-SFP, WS-X6748-SFP and WS-X6748-GETX a single port ASIC supports 12 local Gigabit Ethernet ports. In the WS-X6704-10GE line card, there are four port ASICs each supporting 1 x 10 Gigabit Ethernet ports. For WS-X6708-10GE cards there 8 port ASICs, each supporting 1x 10 Gigabit Ethernet ports. An optional DFC3 can be used with these line cards to provide local switching.

These are port-to-ASIC mappings

Module            Number of Ports    Number of Port Groups    Port Grouping
WS-X6724-SFP      24                 2                        1-12, 13-24
WS-X6748-SFP      48                 4                        1-12, 13-24, 25-36, 37-48
WS-X6748S-GE-TW   48                 4                        1-12, 13-24, 25-36, 37-48
WS-X6704-10GE     4                  4                        1, 2, 3, 4
WS-X6708-10G-3C   8                  8                        1, 2, 3, 4, 5, 6, 7, 8
WS-X6704-10G-3CXL 8                  8                        1, 2, 3, 4, 5, 6, 7, 8

There are four ASICs in an WS-X6748-SFP card:

7606-S#show asic-version slot 2
Module in slot 2 has 3 type(s) of ASICs
        ASIC Name      Count      Version
            JANUS          2      (1.0)
              SSA          2      (9.0)
           ROHINI          4      (1.6)

Example port Gi2/17 shares an ASIC with wth 12 other port, Gi2/1 ,Gi2/3, Gi2/5, Gi2/7, Gi2/9, Gi2/11, Gi2/13, Gi2/15, Gi2/17, Gi2/19, Gi2/21, Gi2/23. This is shown in the table above (Number of Port Groups and Port Grouping):

7606-S#show int gi2/17 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47 (1,3,5,7,9,11,13,15,17,19,21,23)

These are the other port-to-ASIC mappings for WS-X6748-SFP line card:

7606-S#show int gi2/1 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47 (1,3,5,7,9,11,13,15,17,19,21,23)

7606-S#show int gi2/2 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48 (2,4,6,8,10,12,14,16,18,20,22,24)

7606-S#show int gi2/25 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39,41,43,45,47 (25,27,29,31,33,35,37,39,41,43,45,47)

7606-S#show int gi2/26 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48 (26,28,30,32,34,36,38,40,42,44,46,48)

These are the port-to-ASIC mappings for WS-X6748-GE-TX:

7606-S#show int gi1/1 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1-24 (1-12)
7606-S#show int gi1/13 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1-24 (13-24)
7606-S#show int gi1/25 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 25-48 (25-36)
7606-S#show int gi1/37 capabilities | i ASIC
  Ports-in-ASIC (Sub-port ASIC) : 25-48 (37-48)

When applying certain configuration settings to a port, it might need to be applied to all ports in that group (because it's an ASIC wide setting):

7606-S(config)# int gi2/17
7606-S(config-if)#  rcv-queue cos-map 1 1 0
Propagating cos-map configuration to:  Gi2/1 Gi2/3 Gi2/5 Gi2/7 Gi2/9 Gi2/11 Gi2/13 Gi2/15 Gi2/17 Gi2/19 Gi2/21 Gi2/23 
Warning: rcv cosmap will not be applied in hardware.
  To modify rcv cosmap in hardware, all of the interfaces below
  must be put into 'trust cos' state:
    Gi2/1 Gi2/3 Gi2/5 Gi2/7 Gi2/9 Gi2/11 Gi2/13 Gi2/15 Gi2/17 Gi2/19 Gi2/21 Gi2/23 

Not all of the ports above are configured with "mls qos trust xxx" so the "rcv-queue cos-map" command is not applied to any of them, not even those that have "mls qos trust xxx" configured, they must all be in a trust state before the "rcv-queue cos-map" command takes affect across them all (because the ASIC is either in trust mode, or not).

For WS-X6716-10GE, WS-X6708-10GE, WS-X6704-10GE, WS-X6748-SFP, WS-X6724-SFP, and WS-X6748-GE-TX modules the following commands can be configured per port: "wrr-queue bandwidth", "wrr-queue queue-limit", "wrr-queue random-detect", "wrr-queue threshold", "priority-queue cos-map", "rcv-queue random-detect", "rcv-queue queue-limit" and "rcv-queue threshold". The commands "rcv-queue bandwidth", "wrr-queue cos-map" and "rcv-queue cos-map" are applied per ASIC/port group.

A switch fabric card is integrated into the SUP720 and RSP720 supervisor cards, mean the backplane changes from a serially-access bus to crossbar fabric. When using crossbar fabric the line cards in the chassis can communicate with each other simultaneously.

The crossbar fabric consists of 18 fabric channels, providing each linecard two fabric channels into the crossbar fabric. These channels can run at 8Gbps or 20Gbps depending upon the line card used. The CEF256 and dCEF256 series modules connect to fabric using 8 Gbps per channel and CEF720 series modules connect to it using 20 Gbps per channel. This example chassis only has one RSP, there are no drops on the crossbar fabric between channels and crossbar utilisation is low:

7606-S#show fabric active
Active fabric card in slot 6
No backup fabric card in the system

7606-S#show fabric status all
 slot  channel speed module   fabric      hotsync  Standby  Standby
                     status   status      support  module   fabric
    1        0   20G     OK       OK         N/A
    1        1   20G     OK       OK         N/A
    2        0   20G     OK       OK         N/A
    2        1   20G     OK       OK         N/A
    3        0   20G     OK       OK         N/A
    3        1   20G     OK       OK         N/A
    4        0   20G     OK       OK         N/A
    4        1   20G     OK       OK         N/A
    6        0   20G     OK       OK         N/A
    6        1   20G     OK       OK         N/A


7606-S#show fabric utilization all
 slot    channel      speed    Ingress %     Egress %
    1          0        20G            0            0
    1          1        20G            0            0
    2          0        20G            0            0
    2          1        20G            0            0
    3          0        20G            0            0
    3          1        20G            0            0
    4          0        20G            0            0
    4          1        20G            0            0
    6          0        20G            0            0
    6          1        20G            0            0


7606-S#show fabric channel-counters all

 slot channel   rxErrors   txErrors    txDrops  lbusDrops
    1       0          0          0          0          0
    1       1          0          0          0          0
    2       0          0          0          0          0
    2       1          0          0          0          0
    3       0          0          0          0          0
    3       1          0          0          0          0
    4       0          0          0          0          0
    4       1          0          0          0          0
    6       0          0          0          0          0
    6       1          4          0          0          0


7606-S#show fabric fpoe int gi2/17
fpoe for GigabitEthernet2/17 is 3


7606-S#show fabric fpoe map

slot   channel   logical fpoe    physical fpoe
 1        0             0                0
 1        1             1                9
 2        0             2                1
 2        1             3                10
 3        0             4                2
 3        1             5                11
 4        0             6                6
 4        1             7                15
 5        0             8                5
 5        1             9                14
 6        0             10               18
 6        1             11               19

Looking at the output for a WS-X6704-10GE we can see the card has 2 JANUS ASICs which are used for the fabric connections, so as per above that's logical fabric channels 4 & 5. ROHINI ASICs are the port ASICs that connect to JANUS ASICs then back to the crossbar fabric.

7606-S#show asic-version slot 3
Module in slot 3 has 3 type(s) of ASICs
        ASIC Name      Count      Version
            JANUS          2      (1.0)
              SSA          2      (9.0)
           ROHINI          4      (1.6)

7606-S#show fabric fpoe interface te3/1
fpoe for TenGigabitEthernet3/1 is 5
7606-S#show fabric fpoe interface te3/2
fpoe for TenGigabitEthernet3/2 is 5
7606-S#show fabric fpoe interface te3/3
fpoe for TenGigabitEthernet3/3 is 4
7606-S#show fabric fpoe interface te3/4
fpoe for TenGigabitEthernet3/4 is 4

For the WS-X6708-10GE there are 8 R2D2 ASICs (ASIC per port) -> 4 Tiangang ASICs (port pair) -> Metro argos -> 2 SSA ASICS (Fabric complex)

show asic slot  
ASIC Name Count Version
KUMA 2 (3.0)
METRO_ARGOS 2 (3.0)
METRO_KRYPTON 2 (3.0)
SSA 2 (9.0)
R2D2 8 (2.0)
TIANGANG 4 (54.0) 

Te/1
Ports-in-ASIC (Sub-port ASIC) : 1,4-5,7 (1)
Te/2
Ports-in-ASIC (Sub-port ASIC) : 2-3,6,8 (2) 

The oversubscription on the WS-X6717-10G card is moderate-to-high, 4:1 as it has the same 40Gbps (2x 20Gbps) chassis backplane connection as the 6704 and 6708 cards, but one also has to factor in that one can't run the backplane connection on the line card flat out. 32Gbps is probably a realistic danger zone figure (80%) for the backplane connection so it's really only for people that want more than 1Gbps but way less then 10Gbps per port. Having 16x 10G ports but not being able running the card at more than a total aggregate of 32Gbps.

In oversubscription mode the 16x 10Gbps ports are split into 4 groups (so 4x 10Gbps ports in each group). Each port-group can only run at a total aggregate of 10Gbps full duplex, which includes port-to-port "local" traffic. Two ports share a single 10G port ASIC (the NAXOS ASIC) and two port pairs (two NAXOs ASICs) feed into an ASHWINI ASIC which is also 10Gbps. So even inter port traffic is oversubscribed 4:1.

One can disable oversubscription mode on the 16 port card until the additional ports are needed, that provides 4x 10G ports with 1:1 fabric subscription and decent 90MB buffers per ports (a bit less than 100ms), the 4x 10G card (6708) only has 16MB per port buffers. But on the 16 port card when one enables oversubscription mode (which is done per port-group) the RX queues for those four ports drop to 1MB per port and that port-group runs with 4:1 oversubscription.

# Outputs from WS-X6716-10G

#show asic slot 1

Module in slot 1 has 7 type(s) of ASICs
ASIC Name Count Version
KUMA 2 (3.0)
METRO_ARGOS 2 (3.0)
METRO_KRYPTON 2 (3.0)
SSA 2 (9.0)
NAXOS 8 (1.0)
R2D2 4 (3.0)
ASHWINI 4 (0.6)


#show interface Te1/1 capabilities | inc ASIC
Ports-in-ASIC (Sub-port ASIC) : 1-8 (1-4)
#show interface Te1/5 capabilities | inc ASIC
Ports-in-ASIC (Sub-port ASIC) : 1-8 (5-8)
#show interface Te1/9 capabilities | inc ASIC
Ports-in-ASIC (Sub-port ASIC) : 9-16 (9-12)
#show interface Te1/13 capabilities | inc ASIC
Ports-in-ASIC (Sub-port ASIC) : 9-16 (13-16) 


# Outputs from WS-X6816-10GE

#show int te1/1/1 capabilities | in ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1-8 (1-4)
#show int te1/1/5 capabilities | in ASIC
  Ports-in-ASIC (Sub-port ASIC) : 1-8 (5-8)
#show int te1/1/9 capabilities | in ASIC
  Ports-in-ASIC (Sub-port ASIC) : 9-16 (9-12)
#show int te1/1/13 capabilities | in ASIC
  Ports-in-ASIC (Sub-port ASIC) : 9-16 (13-16)


#show asic-version switch 1 slot 1
Module in switch 1, slot 1 has 7 type(s) of ASICs
        ASIC Name      Count      Version
             KUMA          2      (3.0)
      METRO_ARGOS          2      (4.0)
    METRO_KRYPTON          2      (4.0)
              SSA          2      (9.0)
            NAXOS          8      (0.0)
             R2D2          4      (3.0)
          ASHWINI          4      (0.9)


#show hw-module slot 1 oversubscription
port-group      oversubscription-mode
1               enabled
2               enabled
3               enabled
4               enabled

The queuing mode with the drops can be viewed directly on the line card

7606-S#remote command switch show qm port 2 17

-----------------------------------------------------------------------------
* Queuing Mode [COS]
* Type: Tx[COS to Q - 1p3q8t] Rx[COS to Q - 1q8t]
* Per-Port: Trust[DSCP] Default COS[0] Override[0] [VLAN based]
-----------------------------------------------------------------------------
* Cos Mutation Map : 0 1 2 3 4 5 6 7
-----------------------------------------------------------------------------
* Queue Config TX:
      QueueNum[1] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[2] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[3] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[4] PriQueue[Y] QueueType[2] Thresh[1]
* Queue Config RX:
      QueueNum[1] PriQueue[N] QueueType[2] Thresh[8]
-----------------------------------------------------------------------------
* COSMAP(C[Q/T]) TX: 0[1/1] 1[1/2] 2[2/1] 3[2/2] 4[2/2] 5[4/1] 6[3/1] 7[3/1]
*                RX: 0[1/1] 1[1/1] 2[1/1] 3[1/1] 4[1/1] 5[1/1] 6[1/1] 7[1/1]
-----------------------------------------------------------------------------
* Bandwidth TX:  Q[1-WRR]:12288   Q[2-WRR]:64512   Q[3-WRR]:182272
* Bandwidth RX:  Q[1-WRR]:65536
-----------------------------------------------------------------------------
* Queue Limit TX:  Q[1]:68736   Q[2]:352576   Q[3]:565504   Q[4]:234304

* Queue Limit RX:  Q[1]:173504
-----------------------------------------------------------------------------
* TD/WRED TX:  Q[1]/T[1]:[WRED] 27516/68736   Q[1]/T[2]:[WRED] 48126/68736
               Q[1]/T[3]:[WRED] 48126/68736   Q[1]/T[4]:[WRED] 48126/68736
               Q[1]/T[5]:[WRED] 48126/68736   Q[1]/T[6]:[WRED] 48126/68736
               Q[1]/T[7]:[WRED] 48126/68736   Q[1]/T[8]:[WRED] 48126/68736

               Q[2]/T[1]:[WRED] 141076/352576   Q[2]/T[2]:[WRED] 246826/352576
               Q[2]/T[3]:[WRED] 246826/352576   Q[2]/T[4]:[WRED] 246826/352576
               Q[2]/T[5]:[WRED] 246826/352576   Q[2]/T[6]:[WRED] 246826/352576
               Q[2]/T[7]:[WRED] 246826/352576   Q[2]/T[8]:[WRED] 246826/352576

               Q[3]/T[1]:[WRED] 282754/339304   Q[3]/T[2]:[WRED] 339304/395854
               Q[3]/T[3]:[WRED] 395854/452404   Q[3]/T[4]:[WRED] 452404/508954
               Q[3]/T[5]:[WRED] 508954/565504   Q[3]/T[6]:[WRED] 565504/565504
               Q[3]/T[7]:[WRED] 565504/565504   Q[3]/T[8]:[WRED] 565504/565504


* TD/WRED RX:  Q[1]/T[1]:[TD] 173504   Q[1]/T[2]:[TD] 173504
               Q[1]/T[3]:[TD] 173504   Q[1]/T[4]:[TD] 173504
               Q[1]/T[5]:[TD] 173504   Q[1]/T[6]:[TD] 173504
               Q[1]/T[7]:[TD] 173504   Q[1]/T[8]:[TD] 173504


-----------------------------------------------------------------------------

 

WRR/DWRR, Queuing and Congestion Configuration:

Other PEs that support Hierarchical Queueing Framework (HQF) are using the following class-maps, the example 7600 will be configured to classify packets as closely as possible to those other PEs;

! Existing class-maps on IOS-XE/IOS-XR devices

class-map match-any NC
 match mpls experimental topmost 6
 match mpls experimental topmost 7
 match dscp cs6 ! DSCP 48
 match dscp cs7 ! DSCP 56
 match cos 6
 match cos 7
class-map match-any REALTIME
 match mpls experimental topmost 5
 match dscp ef  ! DSCP 46
 match dscp cs5 ! DSCP 40
 match cos 5
class-map match-any APP-1
 match mpls experimental topmost 4
 match dscp af41 ! DSCP 34
 match dscp af42 ! DSCP 36
 match dscp af43 ! DSCP 38
 match dscp cs4  ! DSCP 32
 match cos 4
class-map match-any APP-2
 match mpls experimental topmost 3
 match dscp af31 ! DSCP 26
 match dscp af32 ! DSCP 28
 match dscp af33 ! DSCP 30
 match dscp cs3  ! DSCP 24
 match cos 3     
class-map match-any APP-3
 match mpls experimental topmost 2
 match dscp af21 ! DSCP 18
 match dscp af22 ! DSCP 20
 match dscp af23 ! DSCP 22
 match dscp cs2  ! DSCP 16
 match cos 2     
class-map match-any APP-4
 match mpls experimental topmost 1
 match dscp af11 ! DSCP 10 
 match dscp af12 ! DSCP 12
 match dscp af13 ! DSCP 14
 match dscp cs1  ! DSCP 8
 match cos 1

Below is a DSCP to CoS map, this should create the same class groups as above. This is required because most LAN cards queue traffic (at egress) based on the incoming CoS value. Only newer cards like the WS-X6708-10GE and WS-X6716-10GE can perform queuing and congestion avoidance AND scheduling based on DSCP values (which are not in use in this example 7600 router). UPDATE: From 15.0S IOS versions onwards egress DSCP queuing is supported.

Since these cards queue based on the received CoS value, a port in "mls qos trust dscp" mode will allow the DSCP marking to pass-through (an untrusted port would remove them) but no queuing and congestion avoidance is happening. The ports must be in "mls qos trust cos" state on these cards for queuing to happen. So in order for one to configure the port in "mls qos trust cos" and still use DSCP for egress scheduling (such as a policing policy map) a dscp-to-cos map converts the incoming DSCP value into a CoS value. If one wants queuing, congestion avoidance and scheduling all based on ingress DSCP markings one can configure all ports in "mls qos trust dscp" to let the DSCP markings in and act based on internal DSCP value. After speaking with TAC, cards like the WS-X6708-10G can natively queuing based on DSCP rather than using a CoS-to-DSCP/DSCP-to-CsS map and then put the traffic into the matching COS queue, however, queuing and scheduling can be done on other LAN line cards based on DSCP values too (starting from IOS 15.0S onwards), one simply needs to use a QoS map.

QoS maps are actually configured by default (as shown below). A port configured with "mls qos trust cos" will perform ingress/egress queuing based on the received/sending CoS value. The 7600 uses DSCP values internally so an ingress CoS-to-DSCP map "mls qos map cos-dscp ..." converts received CoS values into internal DSCP values. At egress a DSCP-to-CoS map converts those DSCP values to CoS values and performs egress queuing based on this mapped CoS value. With "mls qos trust dscp" configured on the ingress and egress ports the 7600 simply uses the received DSCP value for both ingress and egress queuing with converting between CoS and DSCP values (assuming no coloured policer re-marks the packet). Below are the default CoS-to-DSCP and DSCP-to-CoS maps:

! Configures the received CoS to internal DSCP map.
! You must enter 8 DSCP values to which PFC QoS maps CoS values 0 through 7.
! Defaults:
!                          CS1 CS2 CS3 CS4 CS5 CS6 CS7
mls qos map cos-dscp     0 8   16  24  32  40  48  56
mls qos map exp-dscp     0 8   16  24  34  40  48  56
mls qos map ip-prec-dscp 0 8   16  24  34  40  48  56

! Configures the internal DSCP to egress CoS map.
! Defaults:
mls qos map dscp-cos 0 to 0
mls qos map dscp-cos 8 10 12 14 to 1  ! CS1, AF11, AF12, AF13
mls qos map dscp-cos 16 18 20 22 to 2 ! CS2, AF21, AF22, AF23
mls qos map dscp-cos 24 26 28 30 to 3 ! CS3, AF31, AF32, AF33
mls qos map dscp-cos 32 34 36 38 to 4 ! CS4, AF41, AF42, AF43
mls qos map dscp-cos 40 46 to 5       ! CS5, EF
mls qos map dscp-cos 48 to 6          ! CS6
mls qos map dscp-cos 56 to 7          ! CS7
! This slight variation matches the class-maps above (by grouping CS6 and CS7)
conf t mls qos map dscp-cos 0 to 0 mls qos map dscp-cos 8 10 12 14 to 1 mls qos map dscp-cos 16 18 20 22 to 2 mls qos map dscp-cos 24 26 28 30 to 3 mls qos map dscp-cos 32 34 36 38 to 4 mls qos map dscp-cos 40 46 to 5 mls qos map dscp-cos 48 56 to 7

This is the proposed new configuration for a WS-X6748-SFP card below, here we don't actually want to limit any one kind of traffic in terms of queue depth or allowed bandwidth. So here everything is set to “max” and bandwidth management would be best managed with a policy-map (although policy-maps on these LAN cards only support policing and not shaping) or an intermediary device (like an ME3600/ME3800):

Ingress queue 1q8t == Tail-Drop only queue

rcv-queue cos-map 1 1 0
rcv-queue cos-map 1 2 1
rcv-queue cos-map 1 3 2
rcv-queue cos-map 1 4 3
rcv-queue cos-map 1 5 4
rcv-queue cos-map 1 6 5
rcv-queue cos-map 1 7 6 7

rcv-queue threshold 1 100 100 100 100 100 100 100 100


Egress queue 1p3q8t == WRED-Drop and Tail-Drop queue 

 ! Apply CoS maps per ASIC/port group
 int gi2/1
   mls qos trust cos

   rcv-queue cos-map 1 1 0
   rcv-queue cos-map 1 2 1
   rcv-queue cos-map 1 3 2
   rcv-queue cos-map 1 4 3
   rcv-queue cos-map 1 5 4
   rcv-queue cos-map 1 6 5
   rcv-queue cos-map 1 7 6 7

   wrr-queue cos-map 1 1 0
   wrr-queue cos-map 2 1 1
   wrr-queue cos-map 2 2 2
   wrr-queue cos-map 2 3 3
   wrr-queue cos-map 2 4 4
   wrr-queue cos-map 3 1 6 7
   priority-queue cos-map 1 5
   exit

  int gi2/13
   mls qos trust cos

   rcv-queue cos-map 1 1 0
   rcv-queue cos-map 1 2 1
   rcv-queue cos-map 1 3 2
   rcv-queue cos-map 1 4 3
   rcv-queue cos-map 1 5 4
   rcv-queue cos-map 1 6 5
   rcv-queue cos-map 1 7 6 7

   wrr-queue cos-map 1 1 0
   wrr-queue cos-map 2 1 1
   wrr-queue cos-map 2 2 2
   wrr-queue cos-map 2 3 3
   wrr-queue cos-map 2 4 4
   wrr-queue cos-map 3 1 6 7
   priority-queue cos-map 1 5
   exit

  int gi2/25
   mls qos trust cos

   rcv-queue cos-map 1 1 0
   rcv-queue cos-map 1 2 1
   rcv-queue cos-map 1 3 2
   rcv-queue cos-map 1 4 3
   rcv-queue cos-map 1 5 4
   rcv-queue cos-map 1 6 5
   rcv-queue cos-map 1 7 6 7

   wrr-queue cos-map 1 1 0
   wrr-queue cos-map 2 1 1
   wrr-queue cos-map 2 2 2
   wrr-queue cos-map 2 3 3
   wrr-queue cos-map 2 4 4
   wrr-queue cos-map 3 1 6 7
   priority-queue cos-map 1 5
   exit

  int gi2/37
   mls qos trust cos

   rcv-queue cos-map 1 1 0
   rcv-queue cos-map 1 2 1
   rcv-queue cos-map 1 3 2
   rcv-queue cos-map 1 4 3
   rcv-queue cos-map 1 5 4
   rcv-queue cos-map 1 6 5
   rcv-queue cos-map 1 7 6 7

   wrr-queue cos-map 1 1 0
   wrr-queue cos-map 2 1 1
   wrr-queue cos-map 2 2 2
   wrr-queue cos-map 2 3 3
   wrr-queue cos-map 2 4 4
   wrr-queue cos-map 3 1 6 7
   priority-queue cos-map 1 5
   exit

  ! Apply per interface configuration
  interface range gi2/1 - 48

   rcv-queue threshold 1 100 100 100 100 100 100 100 100

   ! WRR tail-drop thresholds
   wrr-queue threshold 1 100 100 100 100 100 100 100 100
   wrr-queue threshold 2 100 100 100 100 100 100 100 100
   wrr-queue threshold 3 100 100 100 100 100 100 100 100

   ! WRED thresholds (not actually supported on this card)
   wrr-queue random-detect 1
   wrr-queue random-detect 2
   wrr-queue random-detect 3
   ! WRED thresholds (not actually supported on this card)
   wrr-queue random-detect min-threshold 1 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 2 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 3 100 100 100 100 100 100 100 100
   ! WRED thresholds (not actually supported on this card)
   wrr-queue random-detect max-threshold 1 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 2 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 3 100 100 100 100 100 100 100 100

   wrr-queue queue-limit 100 100 100 
   priority-queue queue-limit 100

   wrr-queue bandwidth 100 100 100
   ! priority-queue bandwidth can not be set, any traffic that is waiting in the priority queue always takes precedence over lower prioirty queues with packets waiting to transmit

With the above config, the "wrr-queue bandwidth" command is in relation to packet scheduling between queues. If Deficit weighted round robin (DWRR) is supported (supported on 1p3q1t, 1p2q1t, 1p3q8t, and 1p7q8t ports), DWRR keeps track of any low-priority queue under-transmission and compensates in the next round. If WRR is used, WRR allows a queue to use more than the allocated bandwidth if the other queues are not using any, up to the total bandwidth of the port. The WS-X6748-GE-TX & WS-X6748-SFP support the egress queue scheduler DWRR but "show mls qos queueing interface x/x" will show if it is actually enabled. In this example WRR is being used.

For the command "rcv-queue threshold", the tail-drop thresholds are being set on ingress. For 1q8t receive queues on the WS-X6748-GE-TX & WS-X6748-SFP cards, WRED is not supported for congestion avoidance only tail-drop. For the 1p3q8t egress queues on these two cards, each threshold can be either WRED-drop or tail-drop. So "wrr-queue threshold" is used to configure tail-drop or "wrr-queue random-detect" is used for WRED configuration.

# This is the output for an interface configured with the above

7606-S#show mls qos queuing interface gi2/17
 Weighted Round-Robin
  Port QoS is enabled
  Trust state: trust DSCP
  Extend trust state: not trusted [COS = 0]
  Default COS is 0
    Queueing Mode In Tx direction: mode-cos
    Transmit queues [type = 1p3q8t]:
    Queue Id    Scheduling  Num of thresholds
    -----------------------------------------
       01         WRR                 08
       02         WRR                 08
       03         WRR                 08
       04         Priority            01

    WRR bandwidth ratios:  100[queue 1] 100[queue 2] 100[queue 3]
    queue-limit ratios:    100[queue 1] 100[queue 2] 100[queue 3] 100[Pri Queue]

    queue tail-drop-thresholds
    --------------------------
    1     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    2     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    3     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    queue random-detect-min-thresholds
    ----------------------------------
      1    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      2    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      3    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    queue random-detect-max-thresholds
    ----------------------------------
      1    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      2    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      3    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    WRED disabled queues:

    queue thresh cos-map
    ---------------------------------------
    1     1      0
    1     2
    1     3
    1     4
    1     5
    1     6
    1     7
    1     8
    2     1      1
    2     2      2
    2     3      3
    2     4      4
    2     5
    2     6
    2     7
    2     8
    3     1      6 7
    3     2
    3     3
    3     4
    3     5
    3     6
    3     7
    3     8
    4     1      5

    Queueing Mode In Rx direction: mode-cos
    Receive queues [type = 1q8t]:
    Queue Id    Scheduling  Num of thresholds
    -----------------------------------------
       01         WRR                 08

    WRR bandwidth ratios:  100[queue 1]
    queue-limit ratios:    100[queue 1]

    queue tail-drop-thresholds
    --------------------------
    1     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    queue thresh cos-map
    ---------------------------------------
    1     1      0 1 2 3 4 5 6 7
    1     2
    1     3
    1     4
    1     5
    1     6
    1     7
    1     8


  Packets dropped on Transmit:

    queue     dropped  [cos-map]
    ---------------------------------------------
    1                        0  [0 ]
    2                        0  [1 2 3 4 ]
    3                        0  [6 7 ]
    4                        0  [5 ]

  Packets dropped on Receive:
    BPDU packets:  0

    queue              dropped  [cos-map]
    ---------------------------------------------------
    1                        0  [0 1 2 3 4 5 6 7 ]

7606-S#remote command switch show qm port 2 17

-----------------------------------------------------------------------------
* Queuing Mode [COS]
* Type: Tx[COS to Q - 1p3q8t] Rx[COS to Q - 1q8t]
* Per-Port: Trust[DSCP] Default COS[0] Override[0] [VLAN based]
-----------------------------------------------------------------------------
* Cos Mutation Map : 0 1 2 3 4 5 6 7
-----------------------------------------------------------------------------
* Queue Config TX:
      QueueNum[1] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[2] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[3] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[4] PriQueue[Y] QueueType[2] Thresh[1]
* Queue Config RX:
      QueueNum[1] PriQueue[N] QueueType[2] Thresh[8]
-----------------------------------------------------------------------------
* COSMAP(C[Q/T]) TX: 0[1/1] 1[2/1] 2[2/2] 3[2/3] 4[2/4] 5[4/1] 6[3/1] 7[3/1]
*                RX: 0[1/1] 1[1/1] 2[1/1] 3[1/1] 4[1/1] 5[1/1] 6[1/1] 7[1/1]
-----------------------------------------------------------------------------
* Bandwidth TX:  Q[1-WRR]:86016   Q[2-WRR]:86016   Q[3-WRR]:88064
* Bandwidth RX:  Q[1-WRR]:65536
-----------------------------------------------------------------------------
* Queue Limit TX:  Q[1]:305280   Q[2]:305280   Q[3]:305280   Q[4]:305280

* Queue Limit RX:  Q[1]:173504
-----------------------------------------------------------------------------
* TD/WRED TX:  Q[1]/T[1]:[WRED] 305280/305280   Q[1]/T[2]:[WRED] 305280/305280
               Q[1]/T[3]:[WRED] 305280/305280   Q[1]/T[4]:[WRED] 305280/305280
               Q[1]/T[5]:[WRED] 305280/305280   Q[1]/T[6]:[WRED] 305280/305280
               Q[1]/T[7]:[WRED] 305280/305280   Q[1]/T[8]:[WRED] 305280/305280

               Q[2]/T[1]:[WRED] 305280/305280   Q[2]/T[2]:[WRED] 305280/305280
               Q[2]/T[3]:[WRED] 305280/305280   Q[2]/T[4]:[WRED] 305280/305280
               Q[2]/T[5]:[WRED] 305280/305280   Q[2]/T[6]:[WRED] 305280/305280
               Q[2]/T[7]:[WRED] 305280/305280   Q[2]/T[8]:[WRED] 305280/305280

               Q[3]/T[1]:[WRED] 305280/305280   Q[3]/T[2]:[WRED] 305280/305280
               Q[3]/T[3]:[WRED] 305280/305280   Q[3]/T[4]:[WRED] 305280/305280
               Q[3]/T[5]:[WRED] 305280/305280   Q[3]/T[6]:[WRED] 305280/305280
               Q[3]/T[7]:[WRED] 305280/305280   Q[3]/T[8]:[WRED] 305280/305280


* TD/WRED RX:  Q[1]/T[1]:[TD] 173504   Q[1]/T[2]:[TD] 173504
               Q[1]/T[3]:[TD] 173504   Q[1]/T[4]:[TD] 173504
               Q[1]/T[5]:[TD] 173504   Q[1]/T[6]:[TD] 173504
               Q[1]/T[7]:[TD] 173504   Q[1]/T[8]:[TD] 173504


-----------------------------------------------------------------------------

Below is example config for WS-X6704-10GE with CFC, no DFC, which has 1q8t ingress using WRR and 1p7q8t egress. Again in this example no traffic is to be dropped, these are backbone links, traffic has been marked and dropped at the edges and these should be capacity managed to not be congested:

  int range Te3/1 - 4

   mls qos trust cos

   rcv-queue cos-map 1 1 0
   rcv-queue cos-map 1 2 1
   rcv-queue cos-map 1 3 2
   rcv-queue cos-map 1 4 3
   rcv-queue cos-map 1 5 4
   rcv-queue cos-map 1 6 5
   rcv-queue cos-map 1 7 6 7

   wrr-queue cos-map 1 1 0
   wrr-queue cos-map 2 1 1
   wrr-queue cos-map 3 1 2
   wrr-queue cos-map 4 1 3
   wrr-queue cos-map 5 1 4
   wrr-queue cos-map 6 1 6
   wrr-queue cos-map 7 1 7
   priority-queue cos-map 1 5

   exit

  interface range Te3/1 - 4

   rcv-queue threshold 1 100 100 100 100 100 100 100 100

   wrr-queue bandwidth 255 255 255 255 255 255 255
   wrr-queue queue-limit 100 100 100 100 100 100 100
   priority-queue queue-limit 100

   ! WRR tail-drop thresholds
   wrr-queue threshold 1 100 100 100 100 100 100 100 100
   wrr-queue threshold 2 100 100 100 100 100 100 100 100
   wrr-queue threshold 3 100 100 100 100 100 100 100 100
   wrr-queue threshold 4 100 100 100 100 100 100 100 100
   wrr-queue threshold 5 100 100 100 100 100 100 100 100
   wrr-queue threshold 6 100 100 100 100 100 100 100 100
   wrr-queue threshold 6 100 100 100 100 100 100 100 100

   ! WRED (not actually supported on this card)
   wrr-queue random-detect 1
   wrr-queue random-detect 2
   wrr-queue random-detect 3
   wrr-queue random-detect 4
   wrr-queue random-detect 5
   wrr-queue random-detect 6
   wrr-queue random-detect 7
   ! WRED (not actually supported on this card)
   wrr-queue random-detect min-threshold 1 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 2 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 3 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 4 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 5 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 6 100 100 100 100 100 100 100 100
   wrr-queue random-detect min-threshold 7 100 100 100 100 100 100 100 100
   ! WRED (not actually supported on this card)
   wrr-queue random-detect max-threshold 1 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 2 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 3 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 4 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 5 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 6 100 100 100 100 100 100 100 100
   wrr-queue random-detect max-threshold 7 100 100 100 100 100 100 100 100

   exit

This is how a port with the above configuration looks:

7606-S#show mls qos queuing interface te3/1
 Weighted Round-Robin
  Port QoS is enabled
  Trust state: trust DSCP
  Extend trust state: not trusted [COS = 0]
  Default COS is 0
    Queueing Mode In Tx direction: mode-cos
    Transmit queues [type = 1p7q8t]:
    Queue Id    Scheduling  Num of thresholds
    -----------------------------------------
       01         WRR                 08
       02         WRR                 08
       03         WRR                 08
       04         WRR                 08
       05         WRR                 08
       06         WRR                 08
       07         WRR                 08
       08         Priority            01

    WRR bandwidth ratios:  255[queue 1] 255[queue 2] 255[queue 3] 255[queue 4] 255[queue 5] 255[queue 6] 255[queue 7]
    queue-limit ratios:    100[queue 1] 100[queue 2] 100[queue 3] 100[queue 4] 100[queue 5] 100[queue 6] 100[queue 7] 100[Pri Queue]

    queue tail-drop-thresholds
    --------------------------
    1     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    2     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    3     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    4     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    5     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    6     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
    7     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    queue random-detect-min-thresholds
    ----------------------------------
      1    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      2    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      3    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      4    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      5    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      6    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      7    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    queue random-detect-max-thresholds
    ----------------------------------
      1    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      2    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      3    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      4    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      5    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      6    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]
      7    100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    WRED disabled queues:

    queue thresh cos-map
    ---------------------------------------
    1     1      0
    1     2
    1     3
    1     4
    1     5
    1     6
    1     7
    1     8
    2     1      1
    2     2
    2     3
    2     4
    2     5
    2     6
    2     7
    2     8
    3     1      2
    3     2
    3     3
    3     4
    3     5
    3     6
    3     7
    3     8
    4     1      3
    4     2
    4     3
    4     4
    4     5
    4     6
    4     7
    4     8
    5     1      4
    5     2
    5     3
    5     4
    5     5
    5     6
    5     7
    5     8
    6     1      6
    6     2
    6     3
    6     4
    6     5
    6     6
    6     7
    6     8
    7     1      7
    7     2
    7     3
    7     4
    7     5
    7     6
    7     7
    7     8
    8     1      5

    Queueing Mode In Rx direction: mode-cos
    Receive queues [type = 1q8t]:
    Queue Id    Scheduling  Num of thresholds
    -----------------------------------------
       01         WRR                 08

    WRR bandwidth ratios:  100[queue 1]
    queue-limit ratios:    100[queue 1]

    queue tail-drop-thresholds
    --------------------------
    1     100[1] 100[2] 100[3] 100[4] 100[5] 100[6] 100[7] 100[8]

    queue thresh cos-map
    ---------------------------------------
    1     1      0 1 2 3 4 5 6 7
    1     2
    1     3
    1     4
    1     5
    1     6
    1     7
    1     8


  Packets dropped on Transmit:

    queue     dropped  [cos-map]
    ---------------------------------------------
    1                        0  [0 ]
    2                        0  [1 ]
    3                        0  [2 ]
    4                        0  [3 ]
    5                        0  [4 ]
    6                        0  [6 ]
    7                        0  [7 ]
    8                        0  [5 ]

  Packets dropped on Receive:
    BPDU packets:  0

    queue              dropped  [cos-map]
    ---------------------------------------------------
    1                        0  [0 1 2 3 4 5 6 7 ]

7606-S#remote command switch show qm port 3 1

-----------------------------------------------------------------------------
* Queuing Mode [COS]
* Type: Tx[COS to Q - 1p7q8t] Rx[COS to Q - 1q8t]
* Per-Port: Trust[DSCP] Default COS[0] Override[0] [VLAN based]
-----------------------------------------------------------------------------
* Cos Mutation Map : 0 1 2 3 4 5 6 7
-----------------------------------------------------------------------------
* Queue Config TX:
      QueueNum[1] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[2] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[3] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[4] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[5] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[6] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[7] PriQueue[N] QueueType[2] Thresh[8]
      QueueNum[8] PriQueue[Y] QueueType[2] Thresh[1]
* Queue Config RX:
      QueueNum[1] PriQueue[N] QueueType[2] Thresh[8]
-----------------------------------------------------------------------------
* COSMAP(C[Q/T]) TX: 0[1/1] 1[2/1] 2[3/1] 3[4/1] 4[5/1] 5[8/1] 6[6/1] 7[7/1]
*                RX: 0[1/1] 1[1/1] 2[1/1] 3[1/1] 4[1/1] 5[1/1] 6[1/1] 7[1/1]
-----------------------------------------------------------------------------
* Bandwidth TX:  Q[1-WRR]:35840   Q[2-WRR]:35840   Q[3-WRR]:35840   Q[4-WRR]:35840                    
                 Q[5-WRR]:35840   Q[6-WRR]:35840   Q[7-WRR]:40960
* Bandwidth RX:  Q[1-WRR]:261120
-----------------------------------------------------------------------------
* Queue Limit TX:  Q[1]:1755072   Q[2]:1755072   Q[3]:1755072   Q[4]:1755072
                   Q[5]:1755072   Q[6]:1755072   Q[7]:1755072   Q[8]:2336896

* Queue Limit RX:  Q[1]:2064768
-----------------------------------------------------------------------------
* TD/WRED TX:  Q[1]/T[1]:[WRED] 1755072/1755072   Q[1]/T[2]:[WRED] 1755072/1755072                    
               Q[1]/T[3]:[WRED] 1755072/1755072   Q[1]/T[4]:[WRED] 1755072/1755072                    
               Q[1]/T[5]:[WRED] 1755072/1755072   Q[1]/T[6]:[WRED] 1755072/1755072                    
               Q[1]/T[7]:[WRED] 1755072/1755072   Q[1]/T[8]:[WRED] 1755072/1755072                    

               Q[2]/T[1]:[WRED] 1755072/1755072   Q[2]/T[2]:[WRED] 1755072/1755072                    
               Q[2]/T[3]:[WRED] 1755072/1755072   Q[2]/T[4]:[WRED] 1755072/1755072                    
               Q[2]/T[5]:[WRED] 1755072/1755072   Q[2]/T[6]:[WRED] 1755072/1755072                    
               Q[2]/T[7]:[WRED] 1755072/1755072   Q[2]/T[8]:[WRED] 1755072/1755072                    

               Q[3]/T[1]:[WRED] 1755072/1755072   Q[3]/T[2]:[WRED] 1755072/1755072                    
               Q[3]/T[3]:[WRED] 1755072/1755072   Q[3]/T[4]:[WRED] 1755072/1755072                    
               Q[3]/T[5]:[WRED] 1755072/1755072   Q[3]/T[6]:[WRED] 1755072/1755072                    
               Q[3]/T[7]:[WRED] 1755072/1755072   Q[3]/T[8]:[WRED] 1755072/1755072                    

               Q[4]/T[1]:[WRED] 1755072/1755072   Q[4]/T[2]:[WRED] 1755072/1755072                    
               Q[4]/T[3]:[WRED] 1755072/1755072   Q[4]/T[4]:[WRED] 1755072/1755072                    
               Q[4]/T[5]:[WRED] 1755072/1755072   Q[4]/T[6]:[WRED] 1755072/1755072                    
               Q[4]/T[7]:[WRED] 1755072/1755072   Q[4]/T[8]:[WRED] 1755072/1755072                    

               Q[5]/T[1]:[WRED] 1755072/1755072   Q[5]/T[2]:[WRED] 1755072/1755072                    
               Q[5]/T[3]:[WRED] 1755072/1755072   Q[5]/T[4]:[WRED] 1755072/1755072                    
               Q[5]/T[5]:[WRED] 1755072/1755072   Q[5]/T[6]:[WRED] 1755072/1755072                    
               Q[5]/T[7]:[WRED] 1755072/1755072   Q[5]/T[8]:[WRED] 1755072/1755072                    

               Q[6]/T[1]:[WRED] 1755072/1755072   Q[6]/T[2]:[WRED] 1755072/1755072                    
               Q[6]/T[3]:[WRED] 1755072/1755072   Q[6]/T[4]:[WRED] 1755072/1755072                    
               Q[6]/T[5]:[WRED] 1755072/1755072   Q[6]/T[6]:[WRED] 1755072/1755072                    
               Q[6]/T[7]:[WRED] 1755072/1755072   Q[6]/T[8]:[WRED] 1755072/1755072                    

               Q[7]/T[1]:[WRED] 1755072/1755072   Q[7]/T[2]:[WRED] 1755072/1755072                    
               Q[7]/T[3]:[WRED] 1755072/1755072   Q[7]/T[4]:[WRED] 1755072/1755072                    
               Q[7]/T[5]:[WRED] 1755072/1755072   Q[7]/T[6]:[WRED] 1755072/1755072                    
               Q[7]/T[7]:[WRED] 1755072/1755072   Q[7]/T[8]:[WRED] 1755072/1755072                    


* TD/WRED RX:  Q[1]/T[1]:[TD] 2064768   Q[1]/T[2]:[TD] 2064768
               Q[1]/T[3]:[TD] 2064768   Q[1]/T[4]:[TD] 2064768
               Q[1]/T[5]:[TD] 2064768   Q[1]/T[6]:[TD] 2064768
               Q[1]/T[7]:[TD] 2064768   Q[1]/T[8]:[TD] 2064768

This is the same configuration again but for the 10G ports on a RSP720-3CXL-10GE which has 2q4t WRR ingress and 1p3q4t egress (because the Gigabit ports are enabled, otherwise it would be 1p3q4t rx / 1p7q4t tx):

  int range Gi6/1 - 3
   mls qos trust cos
   exit

  int range te6/4 - 5
   mls qos trust cos

   rcv-queue cos-map 1 1 0
   rcv-queue cos-map 1 2 5
   rcv-queue cos-map 1 3 6
   rcv-queue cos-map 1 4 7
   rcv-queue cos-map 2 1 1
   rcv-queue cos-map 2 2 2
   rcv-queue cos-map 2 3 3
   rcv-queue cos-map 2 4 4

   wrr-queue cos-map 1 1 0
   wrr-queue cos-map 2 1 1
   wrr-queue cos-map 2 2 2
   wrr-queue cos-map 2 3 3
   wrr-queue cos-map 2 4 4
   wrr-queue cos-map 3 1 6 7
   ! priority-queue cos-map 1 5 ! This is not supported so by not configuring
   ! cos 5 anywhere else, it falls into the priority queue
! UPDATE: Due to BudID CSCuw40966 this command is supported, to place other CoS
! values into the priorty queue, but it requires IOS 15.4(3)S2 or newer
exit interface range Te6/4 - 5 rcv-queue threshold 1 100 100 100 100 rcv-queue threshold 2 100 100 100 100 rcv-queue bandwidth 255 255 rcv-queue queue-limit 100 100 rcv-queue random-detect 1 rcv-queue random-detect 2 rcv-queue random-detect min-threshold 1 100 100 100 100 rcv-queue random-detect min-threshold 2 100 100 100 100 rcv-queue random-detect max-threshold 1 100 100 100 100 rcv-queue random-detect max-threshold 2 100 100 100 100 wrr-queue bandwidth 255 255 255 wrr-queue queue-limit 100 100 100 ! priority-queue queue-limit 100 ! Not supported wrr-queue random-detect 1 wrr-queue random-detect 2 wrr-queue random-detect 3 wrr-queue random-detect min-threshold 1 100 100 100 100 wrr-queue random-detect min-threshold 2 100 100 100 100 wrr-queue random-detect min-threshold 3 100 100 100 100 wrr-queue random-detect max-threshold 1 100 100 100 100 wrr-queue random-detect max-threshold 2 100 100 100 100 wrr-queue random-detect max-threshold 3 100 100 100 100 exit

 

Errors

These are a list of errors encountered during testing

! WS-X6748-GE-TX - 12 ports per ASIC

interface gi1/1
 rcv-queue cos-map 1 1 0

Propagating cos-map configuration to:  Gi1/1 Gi1/2 Gi1/3 Gi1/4 Gi1/5 Gi1/6 Gi1/7 Gi1/8 Gi1/9 Gi1/10 Gi1/11 Gi1/12

! If those ports aren't already in CoS trust the following error is displaid

Warning: rcv cosmap will not be applied in hardware.
  To modify rcv cosmap in hardware, all of the interfaces below
  must be put into 'trust cos' state:
    Gi1/1 Gi1/2 Gi1/3 Gi1/4 Gi1/5 Gi1/6 Gi1/7 Gi1/8 Gi1/9 Gi1/10 Gi1/11 Gi1/12 


 wrr-queue cos-map 1 1 0

Propagating cos-map configuration to:  Gi1/1 Gi1/2 Gi1/3 Gi1/4 Gi1/5 Gi1/6 Gi1/7 Gi1/8 Gi1/9 Gi1/10 Gi1/11 Gi1/12 



! WS-X6748-SFP - 12 ports per ASIX

 rcv-queue cos-map 1 1 0

Propagating cos-map configuration to:  Gi2/1 Gi2/3 Gi2/5 Gi2/7 Gi2/9 Gi2/11 Gi2/13 Gi2/15 Gi2/17 Gi2/19 Gi2/21 Gi2/23 



! WS-X6704-10GE - ASIC per port so trust state per port

 interface te3/2

  rcv-queue cos-map x y z

Warning: rcv cosmap will not be applied in hardware.
 To modify rcv cosmap in hardware, all of the interfaces below
 must be put into 'trust cos' state:
   Te3/2


  rcv-queue threshold 1 100 100 100 100 100 100 100 100

Warning: rcv thresholds will not be applied in hardware.
  To modify rcv thresholds in hardware, all of the interfaces below
  must be put into 'trust cos' state:
    Te3/4


  wrr-queue bandwidth percent 100 100 100 100 100 100 100

QoS:TenGigabitEthernet3/1 - Transmit: sum of all bandwidth percentages should be equal to 100
QoS:TenGigabitEthernet3/2 - Transmit: sum of all bandwidth percentages should be equal to 100
QoS:TenGigabitEthernet3/3 - Transmit: sum of all bandwidth percentages should be equal to 100
QoS:TenGigabitEthernet3/4 - Transmit: sum of all bandwidth percentages should be equal to 100




! RSP720-3CXL-10GE - 

 interface te6/5

  rcv-queue cos-map x y z

Warning: rcv cosmap will not be applied in hardware.
 To modify rcv cosmap in hardware, all of the interfaces below
 must be put into 'trust cos' state: 
  Gi6/1 Gi6/2 Gi6/3 Te6/4 Te6/5


  wrr-queue cos-map x y z

Propagating cos-map configuration to:  Gi6/1 Gi6/2 Gi6/3 Te6/4 Te6/5


  rcv-queue bandwidth 255 255

Warning: rcv bandwidth will not be applied in hardware.
  To modify rcv bandwidth in hardware, all of the interfaces below
  must be put into 'trust cos' state:
    Gi6/1 Gi6/2 Gi6/3 Te6/4 Te6/5

 

Checking QoS Configuration

Commands one can check queues and behaviour with:

show mls qos ip Gi2/17
show mls qos queuing int Gi2/17
show mls qos queuing interface Gi2/17 | b dropped
show counters interface Gi2/17
remote command switch show qm port 2 17
show interfaces | i Ethernet|output drop