Hi all. I am trying to understand some QoS configuration on our WAN routers, and came across something that I need help with.
Let me first briefly explain our setup. On a Cisco ASR WAN router, we have a Gigabit Ethernet interface which serves as the hand-off to our MPLS carrier. This interface is divided into multiple sub-interfaces, and each one is a separate logical connection on a different VRF. Each one of the circuits associated to the respective sub-interfaces has a different bandwidth value, as well as different EF protection from the carrier.
So to shape this traffic to the correct bandwidth that we are receiving from the carrier, we use a policy-map and apply it to the sub-interface. Here is both the parent and a single sub-interface configuration:
interface GigabitEthernet0/0/0
bandwidth 400000
no ip address
negotiation auto
interface GigabitEthernet0/0/0.100
bandwidth 100000
service-policy output OUTBOUND
Note the bandwidth statement of 400Mbps on the parent interface, versus the value of 100Mbps on the sub-interface.
Okay, so the next part is where my confusion comes from. Look at the policy-map applied to the sub-interface:
policy-map OUTBOUND class class-default shape average percent 100 service-policy VOIP
policy-map VOIP class VOIP priority percent 15 set dscp ef
class-map match-any VOIP match ip dscp ef match ip dscp af41
The idea here is that we want to shape the overall traffic to 100% of the bandwidth value of that sub-interface, and then for anything marked with EF or AF41 (VoIP traffic), we prioritize to 15% of that bandwidth, which roughly lines up with the EF value we are paying for.
The problem I see is that the percentage values are not being calculated from the bandwidth statement on the sub-interface, but from the statement on the parent interface. I confirmed this with a "show policy-map interface Gi0/0/0.100":
GigabitEthernet0/0/0.100
Service-policy output: OUTBOUND
Class-map: class-default (match-any) 1349264663 packets, 354123922072 bytes 5 minute offered rate 284000 bps, drop rate 0000 bps Match: any Queueing queue limit 1666 packets (queue depth/total drops/no-buffer drops) 0/0/0 (pkts output/bytes output) 1349139030/354074925202 **shape (average) cir 400000000, bc 4000000, be 4000000** target shape rate 400000000 Service-policy : VOIP queue stats for all priority classes: Queueing queue limit 512 packets (queue depth/total drops/no-buffer drops) 0/0/0 (pkts output/bytes output) 9649564/2071322004 Class-map: VOIP (match-any) 9649564 packets, 2071322004 bytes 5 minute offered rate 0000 bps, drop rate 0000 bps Match: ip dscp ef (46) Match: ip dscp af41 (34) **Priority: 15% (60000 kbps), burst bytes 1500000, b/w exceed drops: 0**
Note that "shape (average) cir 400000000" is 100% of the parent interface bandwidth statement, not the sub-interface. And for "Priority: 15% (60000 kbps)".... 60000 kbps is also 15% of the parent interface.
The way I understand it, we basically have no QoS with this current configuration. Since we are shaping to values that are much higher than what we actually have. So is there a way to make these percentages refer to the sub-interface? Or do I need to shape to the explicit bandwidth values instead of using a percentage? For example, using "shape average 100000000" in the policy-map instead of "shape average percent 100".
Thanks in advance!
No comments:
Post a Comment