cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
3229
Views
0
Helpful
1
Replies

HQF and "insufficient bandwidth" question

I have an interface on a router connected to an any-to-any virtual ethernet service.  The different sites have different carrier bandwidths, so to prevent over-saturation of any of them, the router at my HQ is going to act as a hub (99% of traffic is between the sites and HQ anyway, not site-to-site).

Since interface bandwidth and actual bandwidth are different, I'm trying to shape traffic per site like so:

class-map match-any voice_and_Lifesize_audio
match ip dscp ef
 
class-map match-any Lifesize_video
match ip dscp af41
 
class-map match-any SIP_traffic
match ip dscp cs3
 
class-map match-any InternalTraffic
match access-group name InternalTrafficACL

class-map match-any Site2_traffic
match access-group name Site2TrafficACL

class-map match-any Site1_traffic
match access-group name Site1TrafficACL

class-map match-any Site3_traffic
match access-group name Site3TrafficACL

class-map match-any Site4_traffic
match access-group name Site4TrafficACL

policy-map ChildForSite1
 class SIP_traffic
   priority 128
 class voice_and_Lifesize_audio
   priority 512
 class Lifesize_video
   priority 1024
 class InternalTraffic
   bandwidth remaining percent 70
   random-detect dscp-based
   fair-queue
 class class-default
   bandwidth remaining percent 30
   random-detect dscp-based
   fair-queue

policy-map ChildForSite3
 class SIP_traffic
   priority 128
 class voice_and_Lifesize_audio
   priority 400
 class Lifesize_video
   priority 512
 class InternalTraffic
   bandwidth remaining percent 70
   random-detect dscp-based
   fair-queue
 class class-default
   bandwidth remaining percent 30
   random-detect dscp-based
   fair-queue

policy-map ChildForSite4
 class SIP_traffic
   priority 256
 class voice_and_Lifesize_audio
   priority 1536
 class Lifesize_video
   priority 1536
 class InternalTraffic
   bandwidth remaining percent 70
   random-detect dscp-based
   fair-queue
 class class-default
   bandwidth remaining percent 30
   random-detect dscp-based
   fair-queue

policy-map ChildForSite2
 class SIP_traffic
   priority 128
 class voice_and_Lifesize_audio
   priority 1024
 class Lifesize_video
   priority 768
 class InternalTraffic
   bandwidth remaining percent 70
   random-detect dscp-based
   fair-queue
 class class-default
   bandwidth remaining percent 30
   random-detect dscp-based
   fair-queue

policy-map VirtualEthernetService
 class Site2_traffic
  shape average 2700000
  service-policy ChildForSite2
 class Site1_traffic
  shape average 2700000
  service-policy ChildForSite1
 class Site3_traffic
  shape average 1350000
  service-policy ChildForSite3
 class Site4_traffic
  shape average 5400000
  service-policy ChildForSite4

Here's the interface I want to apply it to.  Here at HQ, it has 15Mbit of bandwidth allocated by the carrier:

int gi0/2
description VirtualEthernet
no ip redirects
no ip proxy-arp
duplex auto
speed auto
ip address 10.254.16.16 255.255.255.0
bandwidth 15360
ip flow ingress
ip flow egress

But when I do:

service-policy output VirtualEthernetService

I get:

Insufficient bandwidth 3072 kbps for bandwidth guarantee

 

Now that the max-reserved-bandwidth doesn't exist any longer, Cisco's documentation here says to designate bandwidth for a default class:

http://www.cisco.com/c/en/us/td/docs/ios/ios_xe/qos/configuration/guide/convert/qos_mqc_xe/legacy_qos_cli_deprecation_xe.html

But if I add a default class to the VirtualEthernetService and define bandwidth in any way (kbps, percent, remaining percent) it doesn't make any difference.  I get the same Insufficient Bandwidth error for 3072 kpbs when I try to apply to the interface.

 

So, I tried a different approach.  I created the policy-map without Site3 (the lowest bandwidth site), and included a default class:

policy-map VirtualEthernetService
 class Site4_traffic
  shape average 5400000
   service-policy ChildForSite4
 class Site2_traffic
  shape average 2700000
   service-policy ChildForSite2
 class Site1_traffic
  shape average 2700000
   service-policy ChildForSite1
 class class-default
  bandwidth percent 5

Then I applied it to the interface:

int gi0/2
service-policy output VirtualEthernetService

That worked.  Then I added the Site3 info into the policy-map:

policy-map VirtualEthernetService
class Site3_traffic
shape average 1350000
service-policy ChildForSite3

And... no error.  And if I do a sho policy-map int gi0/2, I see that it has been applied.  However, if I remove it from the interface and re-add it, guess what I get?

int gi0/2
no service-policy output VirtualEthernetService
service-policy output VirtualEthernetService
Insufficient bandwidth to meet bandwidth guarantees

Arg!  And this time, an amount of bandwidth isn't even listed.

So, I have the following questions:

1. In my Child policy-maps, when use the bandwidth remaining percent, is that remaining percent within the parent shaper?

2. Why was I able to apply a partially-completed policy-map to the interface, then "trick" it by adding the additional class afterward?  Is this a bug?

3. In the absence of the max-reserved-bandwidth command, is adding a default class with a bandwidth percent 5 to the parent policy accomplishing the same thing?  In other words, reserving 95% of the available bandwidth on the interface for the HQF traffic?

3. Do I completely misunderstand HFQ, and should I be doing this differently?

If anyone has any advice to offer, I would greatly appreciate it.  Thank you!

 

 

 

1 Reply 1

Update: I THINK I might have figured this out.  Shaping by itself doesn't define bandwidth for each of the classes under the parent policy.  So I believe the bandwidth remaining percent definitions in the classes within those classes were calculating based on the bandwidth of the parent interface.

I defined bandwidth for the classes within the parent policy:

policy-map VirtualEthernetService
 class Site2_traffic
  shape average 2700000
  bandwidth percent 20
  service-policy ChildForSite2
 class Site1_traffic
  shape average 2700000
  bandwidth percent 20
  service-policy ChildForSite1
 class Site3_traffic
  shape average 1350000
  bandwidth percent 10
  service-policy ChildForSite3
 class Site4_traffic
  shape average 5400000
  bandwidth percent 40
  service-policy ChildForSite4

I was able to apply it to the interface after that with no error.  If I do a sho policy-map int gi0/2 now, I see the available bandwidth for each class in the parent policy, and it matches to the available bandwidth at the remote site.

This isn't in production yet, but we'll see how it goes!

Review Cisco Networking for a $25 gift card