I am working on setting up QoS in a MPLS VPN environment.
I have set up my class maps to match specific traffic types and I plan on using the priority perfect commands.
The problem I am trying to work around is that the provider of the MPLS cloud uses an ethernet service and is giving 10Mbps and 100Mbps handoff's, but the WAN circuit is only 1.5Mbps or 3.0Mpbs.
When I connect this ethernet connection to my router, it will look like a 100Mbps link, and my priority percents will not work correctly, or is there a way to set "true" bandwidth on an ethernet link?
Thanks for any help.
You should use Hierarchical QoS. This will allow you to manage your congestion point.
To do that you create a parent service policy which will shape all the traffic to the desired value (1.5 or 3Mpbs in your case). Then you apply another service-policy (child policy) which will allocate your Bw per class in case of congestion. But now the congestion will start at 3Mpbs:
shape average 1500000
service-policy PARENT out
More info on this link:
Your QoS policies will look at the bandwidth statement under your interface. You can safely specify "bandwidth 3072" under your Ethernet and that will work just fine. QoS works, based of that logical number, when policy is applied.
Hope that helped,
So if my understanding is correct, there is no need to do Heirarchical QoS with a parent shaper for this. You can just apply the bandwidth command and apply the QoS policies to it.
Which way is preferred? The bandwidth command on the interface or Heirarchical QoS with a parent shaper?
Bellow, you can see 55% is 1650kbps on a Fast Ethernet Interfaces. It was based on the bandwidth statement under the interface. It looks like this:
class-map match-all 1
match ip dscp af42
priority percent 55
ip address 126.96.36.199 255.255.255.0 secondary
ip address 188.8.131.52 255.255.255.0
no ip split-horizon
ip summary-address rip 184.108.40.206 255.255.0.0
service-policy output 1
R1(config)#do sh policy-map int
Service-policy output: 1
Class-map: 1 (match-all)
32 packets, 94520 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Match: ip dscp af42 (36)
Output Queue: Conversation 264
Bandwidth 55 (%)
Bandwidth 1650 (kbps) Burst 41250 (Bytes)
(pkts matched/bytes matched) 32/94520
(total drops/bytes drops) 0/0
Class-map: class-default (match-any)
164 packets, 28582 bytes
5 minute offered rate 0 bps, drop rate 0 bps
Flow Based Fair Queueing
Maximum Number of Hashed Queues 256
(total queued/total drops/no-buffer drops) 0/0/0
I was not aware that the QoS policies would look at the bandwidth statements put onto an interface, that helps a lot.
Thank you for that information.
BTW, QoS policies can "pick up" bandwidth, but in your case your policy won't work as desired. You'll want/need the shaper similar to what Laurent provided in his post. The reason for this, you need actual congestion to push traffic into the CBWFQ queues. I.e. without a shaper, your policy would only engage when there's congestion on the Ethernet interface.
So what Stanley says is incorrect then?
"Your QoS policies will look at the bandwidth statement under your interface. You can safely specify "bandwidth 3072" under your Ethernet and that will work just fine. QoS works, based of that logical number, when policy is applied."
Cause I've seen the maths add up when you do a
"So what Stanley says is incorrect then? "
Perhaps, it's not fully clear what he intended.
Again he's correct about CBWFQ using the interface bandwidth to set its class percent bandwidths, but he's not real clear about all the implications.
When he wrote "You can safely specify "bandwidth 3072" under your Ethernet and that will work just fine.", the implication is that's all you need. You then asked for clafication in your follow up post "Which way is preferred? The bandwidth command on the interface or Heirarchical QoS with a parent shaper?", but his response just showed an example CBWFQ policy using the interface bandwidth. This didn't really answer your question, although the implication is that you don't need a parent shaper.
BTW, rereading my prior answer, I may have left you still confused whether you need a shaper. In the situation you described, I believe you do.
As to your question about whether Stanley's response was incorrect, I'm not 100% what he meant to convey.
In his example he used a LLQ class. When congestion forms on the Ethernet interace, and the implicit LLQ policer activates, it would enforce the correct policing bandwidth for that class. Problem is, other non-LLQ classes would still generate traffic beyond your downstream bottleneck capacity. Another problem, since the LLQ implicit policer normally only activates with congestion (unlike an explict policer), you could also see more LLQ traffic than the downstream bottleneck can pass.
Also you asked whether "bandwidth" is just information; it's not since it can impact actual functioning. Changing it alone won't provide the results you want.
you asked about the best way
the answer the best is based on your exact requirment
all of the above posts right 100%
but depends what you want to acieve
if you have custome rlets say and you want to provide classes of traffic and limit each class you could use the following example
lets say you will have a link of 10M
you want to give priority to traffic marked as EF with max traffic in this class as 1M
and you give traffic with class CS4 garnteed abndwisth as 2M and max at all times 3M
and the other traffic for best effort
first lets clasify
match ip dscp Ef
match ip dscp CS$
now i think you need in your case to use policer instead of shape as you will provide the exact amount no need to buffer ( this is for this example not awlays)
police cir 1000000
police cir 3000000
shap avvrage 10000000
service-policy output parant
this will limit each class to spcific amount and will do prioritization and traffic garnteed accordngly
remember here if you do not use the bandwidth command on the interface advised above there will be no issue
BUT if use percent in you class undr the policy map then you must use the right bandwith under the interface as mntioned above
hope this helps