03-01-2021 05:20 AM
Hey Guys.
I really need your help on this one.
I have a rather advanced traffic shaping scenarie that i would like to know if it's possible, and feel free to do a POC of the policy map if it sounds fun ; ).
So, the hardware is ASR1001-X with ofc IOS-XE for starters.
The scenario is as followed.
The max bandwidth that can pass is 500mbit through a 1gbit link.
All source IP's or subnets will have prioritised VoIP, including Skype/Teams.
Each source IP or subnet will have a variable max bandwdth available, symetric upload and download. eg. 100/100, 30/30, 4/4 mbits.
Each source IP or subnet will sort of "have their own queue" so it'll only be from their queue the packages will be dropped if memory is exceeded.
If the 500mbit max bandwidth available between all the queues is exceeded, then reduce the bandwidth equally over all queues.
What is possible, and what is not ?
Is there a better way to handle queing for customers as an ISP ?
Thanks guys ^^.
03-01-2021 08:04 AM
Firstly, shaping is only available upon egress, so if you also have a need to regulate ingress bandwidth, it's generally often less than "ideal". (NB: although policing can be used for ingress or egress, it too is often less than "ideal" for regulating ingress bandwidth.)
Some platforms do support multi-level shaping, where you can use the highest level to shape for overall link CIR and a sub level to shape for particular traffic. I've used such policies for shaping the sublevels for different branch bandwidths.
e.g.:
policy-map parent
class class-default
shape average 500000000
service-policy child
policy-map child
class A
bandwidth percent 1
shape average 100000000
class B
bandwidth percent 1
shape average 30000000
class C
bandwidth percent 1
shape average 4000000
The above bandwidth statements, if the parent policy's shaper engages, should, I believe, treat all the child class equally as to obtaining their share of the 500 Mbps.
Apply the parent policy, out, on your gig link.
03-01-2021 09:01 AM
Hi Jospeh : ).
Thanks a lot ^^. And yes it does support a parrent map : ).
I'll create the scenario and come back to you with the result and behavior.
03-01-2021 11:36 AM
Hi Joseph.
This is the baseline i came up with, and it is working as intended. Ofc, it's not finished and needs to be polished.
Do you have any input maybe ?
class-map match-any CM_Customer_XXX
match access-group name ACL_Shape_Customer_XXX
class-map match-any CM_Match_VoIP
match protocol rtp
match protocol sip
match protocol skype
match protocol rtp-video
match protocol rtp-audio
!
policy-map PM_Match_Protocols
class CM_Match_VoIP
priority 1
class class-default
fair-queue
policy-map PM_AllCustomers
class CM_Customer_XXX
shape average 200000
service-policy PM_Match_Protocols
policy-map PM_AllBandwidth_DW
class class-default
shape average 700000
service-policy PM_AllCustomers
03-01-2021 02:28 PM
Looks like a good start.
If possible, I suggest adding bandwidth limits or allocations to your LLQ and non-LLQ classes, respectively.
You might also consider, if you find you're hitting the shaper limits, moving LLQ to that level. Otherwise it too will be shaped (i.e. delayed). Unfortunately, doing so, you'll need to reduce your same level shaper limits to insure you don't bust your bandwidth cap for that level.
Discover and save your favorite ideas. Come back to expert answers, step-by-step guides, recent topics, and more.
New here? Get started with these tips. How to use Community New member guide