Possible reason for output drops on 6748 blade?

Unanswered Question
May 21st, 2009

I have a couple of 6504/Sup720 switches as my DC distrobution layer. All links are L3 /30 links. Only one of the links is showing any dropped packets, and that is a link on a 48-port 6748-TX blade set to gig speed. It is connected to a gig port on a 7604. Both speed and duplex match up on each end of the link.

The 6748-TX port is showing dropped packets, even though the bits/sec is never much over 100mbps. I've included two outputs of "show int g4/12" within a minute of each other. Nearly 50 output drops occurred during that minute, but as you can see from the 30 second input/output rate, and the tx/rx load, the interface is far from being congested.

What could be causing these output drops?

ROC-6504-DW-A#sh int g4/12

GigabitEthernet4/12 is up, line protocol is up (connected)

MTU 1500 bytes, BW 1000000 Kbit, DLY 10 usec,

reliability 255/255, txload 22/255, rxload 4/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

Full-duplex, 1000Mb/s, media type is 10/100/1000BaseT

input flow-control is off, output flow-control is off

Clock mode is auto

ARP type: ARPA, ARP Timeout 04:00:00

Last input 00:00:00, output 00:00:03, output hang never

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 65962

Queueing strategy: fifo

Output queue: 0/40 (size/max)

30 second input rate 16417000 bits/sec, 8020 packets/sec

30 second output rate 89034000 bits/sec, 16955 packets/sec

L2 Switched: ucast: 1587186 pkt, 379998298 bytes - mcast: 157071 pkt, 17726313 bytes

L3 in Switched: ucast: 1962081115 pkt, 501124043613 bytes - mcast: 0 pkt, 0 bytes mcast

L3 out Switched: ucast: 8302989235 pkt, 4178552401484 bytes mcast: 90 pkt, 27636 bytes

1963960040 packets input, 501532641257 bytes, 0 no buffer

Received 196425 broadcasts (157072 IP multicasts)

0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 watchdog, 0 multicast, 0 pause input

0 input packets with dribble condition detected

8303238946 packets output, 4178530041101 bytes, 0 underruns

0 output errors, 0 collisions, 1 interface resets

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier, 0 PAUSE output

0 output buffer failures, 0 output buffers swapped out

ROC-6504-DW-A#sh int g4/12

GigabitEthernet4/12 is up, line protocol is up (connected)

reliability 255/255, txload 23/255, rxload 3/255

Encapsulation ARPA, loopback not set

Keepalive set (10 sec)

Full-duplex, 1000Mb/s, media type is 10/100/1000BaseT

input flow-control is off, output flow-control is off

Clock mode is auto

ARP type: ARPA, ARP Timeout 04:00:00

output hang never

Input queue: 0/75/0/0 (size/max/drops/flushes); Total output drops: 66011

Queueing strategy: fifo

Output queue: 0/40 (size/max)

30 second input rate 15145000 bits/sec, 7762 packets/sec

30 second output rate 92697000 bits/sec, 17256 packets/sec

L2 Switched: ucast: 1587186 pkt, 379998298 bytes - mcast: 157071 pkt, 17726313 bytes

L3 in Switched: ucast: 1962081115 pkt, 501124043613 bytes - mcast: 0 pkt, 0 bytes mcast

L3 out Switched: ucast: 8302989235 pkt, 4178552401484 bytes mcast: 90 pkt, 27636 bytes

1964032962 packets input, 501548505247 bytes, 0 no buffer

Received 196429 broadcasts (157074 IP multicasts)

0 runts, 0 giants, 0 throttles

0 input errors, 0 CRC, 0 frame, 0 overrun, 0 ignored

0 watchdog, 0 multicast, 0 pause input

0 input packets with dribble condition detected

8303418464 packets output, 4178655702763 bytes, 0 underruns

0 output errors, 0 collisions, 1 interface resets

0 babbles, 0 late collision, 0 deferred

0 lost carrier, 0 no carrier, 0 PAUSE output

0 output buffer failures, 0 output buffers swapped out

I have this problem too.
0 votes
  • 1
  • 2
  • 3
  • 4
  • 5
Overall Rating: 5 (3 ratings)
Loading.
nate-miller Thu, 05/21/2009 - 13:30

what's the output of show queuing int gi4/12?

Do you have QoS enabled on this box, and do you have traffic in different queues?

If your buffers are relatively shallow, and your WRED or tail drop thresholds are set relatively low, you could be dropping earlier than you intended.

Have you toyed with wrr cos mappings on this switch? those are asic-based, and can spill over to other ports you hadn't intended to configure.

jkeeffe Fri, 05/22/2009 - 07:05

I do have QOS enabled on the 6504 with "mls qos". Here is the config of that port:

interface GigabitEthernet4/12

description ROC-7604-A G1/1

ip address xxx.xx.xxx.xx 255.255.255.252

ip wccp 61 redirect in

ip flow ingress

ip pim sparse-mode

load-interval 30

mls qos trust dscp

And here is the output of "show queueing int g4/12":

ROC-6504-DW-A#sh queueing int g4/12

Interface GigabitEthernet4/12 queueing strategy: 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] 150[queue 2] 200[queue 3]

queue-limit ratios: 50[queue 1] 20[queue 2] 15[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 70[1] 70[2] 70[3] 70[4] 70[5] 70[6] 70[7] 70[8]

queue random-detect-max-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]

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:

BPDU packets: 0

queue dropped [cos-map]

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

1 91865 [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 ]

Do you think I should turn off "mls qos" or adjust, or adjust queue 1 somehow?

nate-miller Tue, 05/26/2009 - 06:56

Are you using QoS in your network? If you're actively passing marked traffic (most likely Voice or video), I certainly wouldn't turn QoS off. The bulk of your data looks like it's being passed as either 0 or 1 traffic.

Do you have an active use for Cos0 (DSCP8?) Have you configured a scavenger class in your network? If so, you NEED to re-arrange your COS mappings so CoS1 gets less favorable treatment that CoS0- by default, CoS 1 actually gets slightly better treatment!

a 6748 has 1.3MB of buffer per port.

The setup you have (as indicated by Queue limit ratios) indicates that you've allocated half of that to queue 1- about 650KB. You're going to start doing WRED-based drops on CoS 0 traffic in that queue when the buffer hits 40% of that- 260KB, or ~2Mb.

Before poking around at anything, you need to consider what your QoS strategy is- what traffic are you passing, what markings are your honoring, and what volumes of that traffic are you planning to service (both now, and through your crystal ball, in the future).

If 100% of your traffic is CoS 0, you could probably adjust your buffers to some ridiculously high value for this queue, and starve everything else. Keep in mind that even without your specifically using Cos 6/7, your routing traffic and STP and such tend to fall into those- so leave som room for those!

I suggest reading the Telepresence SRND- it's got the best descriptions of Switch-based IOS QoS configurations I've yet to read. The VOIP srnd focuses heavily on CatOS, and isn't as well written, IMHO.

Assuming you don't have any scavenger class traffic on your network (or something else using COS1),

you could use:

wrr-queue random-detect max-threshold 1 100 100 100 100 100 100 100 100

wrr-queue random-detect min-threshold 1 80 100 100 100 100 100 100 100

That'll effectively double your buffer for your CoS 0 traffic.

However, if the problem is that you're frequently experiencing "microcongestion" towards the 7604, bigger buffers may just mean that you'll start dropping traffic a split second later than you did before.

(Yes, bandwidth towards the 7604 is low on a per average basis, but if there's frequently multiple ports on yoru 6500 all ingressing traffic simultaneously destined to be egressed towards the 7604, something's got to give.)

nate-miller Tue, 05/26/2009 - 08:20

[Note: in addition to all my blatant typos, I meant:

Are you actively using COS1 (DSCP8)? That significantly changes the meaning of what I was trying to convey.

Towards all my user ports, I'm applying a policer that marks all traffic over 10Mb from CS0 (default) to CS1. As a result, at any port where I'm managing QoS, I need to make sure that CS1 actively gets worse treatment than CS0. In my case, following the SRND, I moved CS1 to Queue 1 Threshold 1, and only allocated it 5% of the bandwidth. CS0 is now in Q2T1, all by itself. 2/3/6/7 are in Q3, all at separate thresholds. 4/5 are both mapped to the PQ. This is achieved through use of the "wrr-queue cos-map" commands.

IMPORTANT: If you change the cos-mappings on a port, these changes WILL affect multiple ports on the same ASIC.

When you update the cos-maps, you should also update the thresholds/bandwidth/queue-limits, or you'll end up with sub-optimal situations. These commands are NOT asic-based, and will not spill over to the other ports. So if you play with cos-mappings on one port, make sure you update all the rest of the parameters on every other port that's inadvertently touched, or you'll get some really unfavorable behavior.

My 1p3q8t standards (as suggested by the SRND, and seem to work for me) are:

wrr-queue bandwidth 5 35 30

priority-queue queue-limit 30

wrr-queue queue-limit 5 35 30

wrr-queue random-detect min-threshold 1 80 100 100 100 100 100 100 100

wrr-queue random-detect min-threshold 2 80 100 100 100 100 100 100 100

wrr-queue random-detect min-threshold 3 60 70 80 90 100 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 70 80 90 100 100 100 100 100

wrr-queue cos-map 1 1 1

wrr-queue cos-map 2 1 0

wrr-queue cos-map 3 1 2

wrr-queue cos-map 3 2 3

wrr-queue cos-map 3 3 6

wrr-queue cos-map 3 4 7

priority-queue cos-map 1 4 5

This config set is pretty difficult to read- but if you compare the output of show queueing before and after it's applied, it really starts to make a lot of sense. It's proving to be a decent baseline for my network, at any rate.

If you don't have any traffic other than CoS0, however- this isn't going to buy you a whole lot! That's why it's important to know what you're supporting (or intending to support) before tweaking any of the knobs. ]

jkeeffe Tue, 05/26/2009 - 08:33

I printed out the Telepresence SRND as you suggested and will spend some time digging through it. You're right about the QOS SRND (I've been using that up to this point) that it is centered around CatOS, thus making is difficult to use in a Native IOS environment.

I do have a lot of traffic that is not just Cos-0, and now it's time for me to get serious about the correct QOS on my 6500s. UP to now I have only trusted the markings going through the 6500s, but as can be seen by the 'sh queueing...' output, my traffic levels are at the point of dropping packets.

My requirements on int g4/12, where the drops are occurring, are:

300 VoIP G-711 calls = roughly 30mb, DSCP EF

20 video conference streams = roughly 30 mbs for high-def streams, DSCP AF4 or CS3.

I haven't set up a scavenger class yet, but intend to after I get the correct voice and video classes taken care of.

With the above voice and video requirements, what would be your recommendation on the wrr parameters?

Also, if you don't mind, what traffic types did you put in your scavenger class?

nate-miller Tue, 05/26/2009 - 09:16

In my network, voice and video are the only defined applications that require any QoS at the current time. However, I didn't want to design myself into a box for if/when a broader strategy is decided upon.

My preferred solution:

I don't want to be responsible for marking traffic at the switch. Traffic ingressed into the network should be marked appropriately by the application that's requesting it.

This is my stance mainly because the first applications that people are asking to be marked are voice and video- and writing an ACL to effectively match any port from 16,000 - 32000 udp kind of makes it difficult to ensure that I'm accurately marking voice and only voice traffic to up to EF.

Secondly, I don't like to trust edge ports!

Trusting towards an end user means that if some enterprising user finds the QoS settings in windows, they've got free reign to destroy my PQ. Conditional trust towards a cisco phone mitigates my concerns a little bit- but it only works with cisco phones, and it's not available on a 6500.

I've implemented policers at the edge. I've got a policy map applied to every user port on my campus that gives 128K worth of bandwidth to incoming EF traffic, 32K to CS3, and 32K of CS0 traffic on my Voice VLAN. I drop excess EF, and mark CS0 and CS3 excess traffic to CS1. (scavenger.) This is done to ensure that somebody doesn't use a vlan hopping tool to get into the Voice VLAN and send data above and beyond what's expected.

On the Data VLAN, I accept 10Mb of traffic, and set it to CS0- and anything above that, I set to CS1.

This means that legitimate chatty traffic may get marked down to CS1, but it's important to remember that it won't get dropped unless there's congestion! And the people you're 'punishing' are the high-volume users that are probably contributing to the congestion in the first place.

This isn't so much a method to make sure people aren't regularly using FTP or whatnot- it's done mainly to ensure that if Slammer were ever to occur again, I don't simultaneously have every choke point in my user domains completely starved out- it's most likely worm or viral traffic that would cause high-volume sustained traffic rates.

My Video deploys are relatively minimal right now, so I have another policy map on a per-port basis that allows for 18Mb of CS4 traffic. Excess is dropped. Depending on how widespread and 'mobile' your video solutions are, you may elect to make that a part of your default user stance.

It sounds like you could tweak your PQ down to 100MB or 10% right now- but as soon as video becomes more prevalent and you hit the 100Mb threshold, you're forced to re-deploy to your entire infrastructure. That's why my pilot started out with 300Mb and I figured I'd tweak around from there. Voice and Video are going to be a lot less forgiving than the TCP traffic that WRED is going to pick on in the CS0 queue.

I haven't noticed any excessive drops from this tuning in my environment after following the SRND, so I've pretty much left it as-is for now. I _did_ experience a significant amount of excess drops when I modified the queue-mappings but not the buffer/thresholds/etc parameters as well. Tuning those to the suggested configs made the drops disappear as well.

I'd probalby start just by upping the WRED threshold on that port to 100max/80min and start figuring out your long term goals from there. Once you have an idea, you can start playing with cos mappings and more in-depth values for the other

(In this case you'll have to modify Max first, then min- otherwise the switch complains that min is greater than max, and doesn't take the config. Be aware of any of these types of errors when you're updating configs!)

jkeeffe Tue, 05/26/2009 - 09:34

You've been extremely helpful - Thank you!! Now it's time for me to dig into the SRND and bone up on all the WRR queue/threshold theory and jargon.

Actions

This Discussion