Basic Catalyst 3560 Egress Shaping

cisco-catalystqos

We have a service provider (and we can't change providers) who is giving us a "metro ethernet" style connection between two of our locations. On each end, we plug into an ethernet port on a provider's switch and they ship frames back and forth. We get a certain bandwidth from them and they are dropping packets that burst over the bandwidth.

I'm pretty sure that a good way for us to not burst over their limit and avoid dropped packets is for us to shape our traffic to fit under the limit. I think I'm very close to understanding how to do this, but it's pretty complicated. We have a Cisco Catalyst 3560X on each side of the connection.

If I want to shape traffic down to 50 Mbps across the tunnel, it looks like the right (maybe only?) way to do it is to use shaping on the egress queues of the ports used for the link on each of our 3560s. We do not need to mark or classify any traffic, we just want to shape everything down to 50 Mbps. Here's an example port config right now:

interface GigabitEthernet0/1
 speed auto 10 100
 spanning-tree portfast disable

I know I'll want to do mls qos in global config mode. Then I should see something like this:

[Switch name]# show mls qos int gig0/1 queueing
GigabitEthernet0/1 
Egress Priority Queue : disabled
Shaped queue weights (absolute) :  25 0 0 0
Shared queue weights  :  25 25 25 25
The port bandwidth limit : 100  (Operational Bandwidth:100.0)
The port is mapped to qset : 1

My understanding so far is the following, feel free to correct me:

  • All traffic will be CoS 0/unmarked so will go into egress queue 2 by default.
  • Egress queue 2 is sharing the bandwidth equally with queue 3 and 4, and queue 1's weight is ignored.
  • Egress queue 1 is shaped to 1/25 of the interface bandwidth, so 4 Mbps in this case.

So I get that queues 2 – 4 are each guaranteed 33% of the bandwidth (33 Mbps, right?) and queue 1 is shaped to 4 Mbps. My first question is:

With this default configuration, if only queue 2 is used, how much
bandwidth will it get? 100 Mbps? And if all queues were fully
utilized, queue 1 would have 4 Mbps and queues 2 – 4 would each have
32 Mbps (100 – 4 = 96/3 = 32)?

And now the real question:

To shape all unclassified egress traffic to fit into 50 Mbps, can I
just enter
srr-queue bandwidth shape 0 2 0 0 on the interface in question and be done?

It seems like the queue sharing and shaping limits aren't guaranteed, so I might need to shape down to a nominal 45 Mbps on the egress queue if any burst over 50 Mbps is to be avoided. Can I do that by just running srr-queue bandwidth limit 90 combined with the above shaping? Would it be the same to instead use:

srr-queue bandwidth shape 0 1 0 0
srr-queue bandwidth limit 45

Would that shape queue 2 to 45 Mbps (on a 100 Mbps interface)?

Once I understand that, I'm guessing my next stop is sorting out buffer allocations and thresholds so my shaping is dropping as few packets as possible, right? That can be a separate question if necessary, but actually that seems to make a lot more sense so far.

Best Answer

And now the real question:

To shape all unclassified egress traffic to fit into 50 Mbps, can I just enter srr-queue bandwidth shape 0 2 0 0 on the interface in question and be done?

It seems like the queue sharing and shaping limits aren't guaranteed, so I might need to shape down to a nominal 45 Mbps on the egress queue if any burst over 50 Mbps is to be avoided. Can I do that by just running srr-queue bandwidth limit 90 combined with the above shaping?

Short answer: Yes, this is all it takes to do egress shaping.

Of course, mls qos must be entered, but once that is configured, egress shaping on a port is as simple as:

  1. Adjust the line rate, if necessary (speed 10 100 1000)
  2. Set the bandwidth limit, if necessary (srr-queue bandwidth limit 10-90, the last argument is the percent of the line rate to limit the bandwidth to)
  3. Enter the shaping weight for queue 2 on the interface (srr-queue bandwidth shape 0 x 0 0 where either the bandwidth limit (if applied) or the line rate (if no limit) divided by x is the bandwidth the traffic is shaped to)

Source:
Earlier today I took an extra 3560, put an extra computer on each of two ports, and started making configuration changes while copying files back and forth between the two computers, watching the estimated copy rate, and doing some math to confirm the numbers match up.