Overrun Errors on ASA 5550

I have been getting overrun errors on 3 different ASA 5550 HA pairs with traffic rates less than 100Mbps total. I was told by one TAC guy to split the traffic between the two slots so that traffic comes in one and exits the other to maximize throughput because the 5550 was designed to work that way. Another TAC guy told me to enable ethernet flow control to alleviate the overrun errors because the traffic was bursty, but this doesn't seem to address the root cause of the problem to either. TCP traffic is bursty by nature and has it own flow control mechanism. I can't seem to find any detailed info on why traffic needs to be split for 100Mbps when the marketting throughput number is 1.2G. Is this a design flaw or limitation? Is there a way to alleviate overrun errors?

Thanks so much for the info, Marcin. The quick start doc basically said the same thing as the TAC person: "For maximum throughput, configure the ASA so that traffic is distributed equally between the two buses. Lay out the network so that traffic enters through one bus and exits through the other. " But do you know the reason why that is necessary? Can you please elaborate on how syslog can reveal what is causing the overflow? How does enabling RPF help with alleviating overflow?

Are you seeing 'no buffer' counters on the interfaces as well? What is the low count for the 1550 byte memory block in the output of 'show blocks'?

The TAC engineer suggested that you split traffic between the different interface modules because they both have their own internal backplane interfaces (Internal-Data0/0 and Internal-Data1/0). However, this will only help if you're actually overrunning the internal interfaces.

Flow control and overrunning an interface are unrelated. Flow control is determined by a client and server's receive buffers/windows, not by intermediary devices. Additionally, flow control only dictates how many much data can be sent without an ACK but doesn't specify the rate at which the data is sent.

My concern is that there are numerous cases where overruns occur and there are plenty of 1550 byte memory blocks available and the interface doesn't show 'no buffer' counters. I can't imagine why an interface would be overrun in this scenario but have never been able to find a conclusive answer from Cisco.

Thanks so much for the link - lots of useful info. Unfortunately, I did checked speed and duplex and they matched on both sides and also saw no CRC and no collisions so I ruled it out. CPU utilization is also very low so enable RPF probably won't help either. No buffer count is 0 so I am not sure why we are getting overrun errors at very low traffic rates. We saw overrun errors at as low as 5Mbps with 1 min sampling interval. That doesn't tell whether the traffic is highly bursty instantaneously at some point, but how bursty can it be with 5Mbps worth of traffic? And how much burstiness can the ASA tolerate? I have been trying to get a logical explaination for the overrun errors from Cisco TAC for about 2 weeks, but they just danced around the question. I believe there is an inherent design limitation or software bug that causes this. I am afraid that without getting to the root cause, turning flow control just maquerates the problem.

Hi, I am getting a lot closer, but not quite there yet. It appears that the ASA5550 cannot tolerate highly bursty traffic even for a very short period of time (saw errors for less than 10Mb worth of bursty traffic). Turning on flow control will clear up the input errors, but I am still trying to gather the data to understand the full impact of flow control on the performance. I am very surprised by the fact the input buffers can not handle such a low level of bursty traffic.

Just got off the phone with the TAC engineer, he was very helpful in providing me with the performance test data. It looks like turning on flow control is the only option.

Maybe someone from Cisco can actually chime in to better explain how 'bursty' traffic can overrun an interface even though there are sufficient 1550byte memory blocks, 0 'no buffer counters' low throughput, and low CPU utilization.

I've seen this same issue many times in the past and have always received the same response about bursty traffic and flow control. Obviously, there's a limiting factor somewhere in the ASA architecture. Why should I need to use flow control and have the switch buffer the data if, supposedly, there is plenty of buffer space and memory blocks on the ASA?

Cisco TACS is now recommending finding those hosts that are generating the bursty traffic, nothing to be done on the ASA to deal with this issue, I'd also like to share the Cisco engineer answer on the ASA handling of traffic and buffering:

"I would like to confirm that the input queue on an interface has a capacity that varies. Depending upon the configuration and speed and duplex settings on both sides it can be 13 packets or a maximum of 75 packets. At the same time the output queue could be as little as 2 packets and as much as 40 packets"

Thanks for sharing the info. Did they say what to do with those bursty hosts once you find them? I don't have the full context of the reason and logic behind that suggestion, but it doesn't seem to make any sense. I have told TAC repeatedly that traffic on the network will always be bursty. The only time that you may not have bursty traffic is when you are streaming video at constant bit rate. TCP traffic is bursty by nature. Even if you only have UDP traffic on the network, the accumulative effect of multiple hosts transmitting at the same time still makes the traffic bursty.

The queue size is not as important as how fast the ASA can pull the packets out of the queue and forward them. It seems like they can not do that very fast so the queue gets filled up very quickly and overflowed.

Have you had a chance to try turning on flow control? Did it help?

My experience dealing with TAC is that different TAC engineers may give you complete different answers and sometimes contradicting each other. If the answer doesn't make sense, you can ask for an escalation.

Interface is being overrun, there are sufficient 1550 byte memory blocks, the 'no buffer' count is 0. Still, after several years, trying to find an explanation that explains this type of overrun. If it were 'bursty' traffic, wouldn't the interface buffer fill before being overrun which would show an incrementing 'no buffer' counter?

There is a FIFO buffer present on the NIC hardware where packets are first received, before getting DMA'd to a receive buffer in the ASA RAM that is assigned to this interface. An overrun is counted when a packet cannot be received by the NIC because the FIFO is full.

There several possible reasons why the FIFO may fill up, but the two most obvious ones are

1. A traffic burst fills up the FIFO very quickly. This is entirely possible even with a relatively low aggregate throughput on the interface measured over minutes.

2. The NIC cannot find a free receive buffer assigned to this interface to DMA the packet to. There are many possible causes of this but most relate to the ASA simply not being able to keep up with the amount of traffic it is receiving.

Note that neither of these cases will increment the "no buffer" counter in recent ASA code. AFAIK that counter is incremented when the driver attempts and fails to assign a new receive buffer to the interface.

Since your interface does not seem to be oversubscribed I believe that you are most likely hitting case 1.

I have this same problem, and I acted upon TAC's request to turn on flow control. I do find myself with another related issue now though.

While I no longer see any input errors on the ASA interfaces, I am seeing about 10,000 pause frames a minute being sent from the ASA to my upstream 6500. While this seems like a TON of pauses to me, TAC seems not too concerned about it.

TAC is suggesting that the problem lies in too many small / bursty packets.

Well I only implemented the flow control on Sunday night so it’s only been about 36 hours now.

I think I'm well over 4 million pause frames sent back to my 6500, and actually I've seen no performance issues.

It just seems like a TON of pauses , but TAC says that’s nothing for a 6500 to handle, and the overruns have not incremented at all on the ASA so I guess there has been no packet loss.

Between that link and my TAC engineer I've got a really good idea as to the where the bottleneck lies. Basically something on my network is sending traffic that is filling the FIFO queue on the NIC before the next packet can be put on the receive ring. Most likely this is caused by lots of very small packets (maybe) coming in very bursty. I say maybe because if my receive ring is full to the point that 300 times a second the ASA has to ask for pause then it seems that it’s probably pretty constant little packets, or basically continual burst.

The questions will now be to track down where these little guys are coming from.

So in searching the internet about this issue it seems really common, and the bottleneck seems to be the FIFO queue on the NICs on these units. The best info I've found says the queue is 32 - 48KB depending on your model. I really wonder if these new 55x5-X models are using a larger buffer for the queue on the NICs. Unfortunately we only recently purchased these 5550's so upgrading won’t make the bosses happy, better to address the root cause.

Apparentyly, this is a product architectural issue due to single core CPU for all ASA5500 series. Overrun is due to CPU hog. I encounter same issue too and confirmed CPU hog detected. Same thing TAC suggest to make use of both PCI, agree it will help mitigate overrun but if CPU continue hog due to number of software feature enabled in ASA, my fell is overrun will continue. Flow control will help but it will shift the botttlenck to upstream and slowing down the traffic. This box is distance away from the 1.2Gbps spec.

I have the same issue on 5550s, 5510s and 5520s that we have in production. Low CPU, moderate traffic, etc. I think it comes down to the NICs as they are old Intel NICs with 16kb of buffer. I found that I recieve no overruns on the 5550's addon card which makes me think it is these junky Intel NICs that Cisco uses or the PCI bus. We do have a 5515-X in production with no overruns, so maybe it is fixed on newer boxes since they use PCI-E rather than PCI for the NICs.

I’ve gone round and round with TAC, and gotten two of their CCIEs on the case (both of whom were super knowledgeable btw), and they have proven to me that this is simply a hardware shortcoming with these models.

The 55x5-x models use a different NIC with a larger buffer, and should not have this issue.

It is pretty sad though, the traffic isn't really that burst for some of our sites and they still fail to hold up. I would recommend replacing any older ASA you have if you plan to do a internet upgrade above 50Mbit. The ASAs were made for a different traffic profile based off the internet that existed in 2005.