05-29-2016 04:04 AM - edited 03-05-2019 04:06 AM
Hello Guys
We have a requirement listed below which we intend to solve using nested shaping-
1. Total WAN bandwidth = 8Mbps
2. Class A : Reserve 4Mbps ; ClassB : 1Mbps ; ClassC : 1Mbps; Rest class-default
3. Class A+B+C combined shouldn't exceed 7Mbps Outbound
To achieve this, we were planning to use Nested Shaping but it doesn't work. We can see that IOS will only allow us to use 50% of bandwidth on the middle policy (PM_CHILD).
Is there any such restriction ? Documented ?
IOS 15.2(4)M3
--------
E.g
-
Class-map CLASS-A-B-C
class CLASS-A
class CLASS-B
class CLASS-C
-
policy-map PM_GRANDCHILD -> these reservations are not allowed by IOS when aggregate is more than 4000 in total
class CLASS-A
bandwidth 1000
class CLASS-B
bandwidth 1000
class CLASS-C
bandwidth 4000
-
policy-map PM_CHILD
class CLASS-A-B-C
shape average 7000000
service-policy PM_GRANDCHILD
-
policy-map PM_PARENT
class class-default
shape average 8000000
service-policy PM_CHILD
-
int fa0/0
service-policy output PM_PARENT
-
Error:
Router(config-pmap-c)# class CLASS-C
Router(config-pmap-c)# bandwidth 4000
Insufficient bandwidth 4000 kbps for the bandwidth guarantee
Router(config-pmap-c)# bandwidth 2000
Insufficient bandwidth 2000 kbps for the bandwidth guarantee
Router(config-pmap-c)# bandwidth 1999 -> this value is allowed
Router(config-pmap-c)#
Solved! Go to Solution.
05-29-2016 08:18 AM
Hi,
This is a behaviour of HQF. Please see the following under section 'Nested Policy and Reference Bandwidth for Child-Policy'
http://www.cisco.com/c/en/us/td/docs/ios/qos/configuration/guide/15_1/qos_15_1_book/qos_frhqf_support.html#wp1089442
Hopefully I can explain this correctly.
In your example, if you do not define a bandwidth using the bandwidth command under the PM_CHILD classes, then HQF assigns an equal bandwidth to each of the classes using the PM_PARENT class-default shape rate as the reference bandwidth. There are two classes under policy-map PM_CHILD; CLASS-A-B-C and class-default (not visible). Each of these classes will be allocated an equal share of 8Mbps = 4Mbps.
This is why IOS will only allow you to use 50% of the parent shaped bandwidth for the PM_GRANDCHILD classes - 1% which is reserved for class-default. This will explain why you could add a bandwidth value of 1999 and not 2000
To resolve this you need to configure class CLASS-A-B-C with an explicit bandwidth guarantee, for example
policy-map PM_CHILD
class CLASS-A-B-C
bandwidth 7000
shape average 7000000
service-policy PM_GRANDCHILD
This should hopefully solve the issue
05-29-2016 08:18 AM
Hi,
This is a behaviour of HQF. Please see the following under section 'Nested Policy and Reference Bandwidth for Child-Policy'
http://www.cisco.com/c/en/us/td/docs/ios/qos/configuration/guide/15_1/qos_15_1_book/qos_frhqf_support.html#wp1089442
Hopefully I can explain this correctly.
In your example, if you do not define a bandwidth using the bandwidth command under the PM_CHILD classes, then HQF assigns an equal bandwidth to each of the classes using the PM_PARENT class-default shape rate as the reference bandwidth. There are two classes under policy-map PM_CHILD; CLASS-A-B-C and class-default (not visible). Each of these classes will be allocated an equal share of 8Mbps = 4Mbps.
This is why IOS will only allow you to use 50% of the parent shaped bandwidth for the PM_GRANDCHILD classes - 1% which is reserved for class-default. This will explain why you could add a bandwidth value of 1999 and not 2000
To resolve this you need to configure class CLASS-A-B-C with an explicit bandwidth guarantee, for example
policy-map PM_CHILD
class CLASS-A-B-C
bandwidth 7000
shape average 7000000
service-policy PM_GRANDCHILD
This should hopefully solve the issue
05-30-2016 03:59 AM
Excellent answer, many thanks.
Had seen the URL earlier but didn't interpret it correctly. It makes perfect sense now.
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: