12-13-2010 02:46 PM
I have a Cisco 871W.
It has a Dialer 1 interface that creates a PPPoE connection that passes through the FA4 ethernet interface to a ADSL modem.
The router has no ATM interface.
Does anyone know what incantations of policy-map are needed to make QoS work ?
-What command is needed and where to tell it what my upstream ("output") bps rate is ?
-If I give the class my-voip acl a "priority 128", what incantation do I need to give to "class-default" so that other traffic take the rest of the available banwidth or take it all when voip traffic is not detected ?
Do I need to focus on the dialer interface, or on the ethernet interface for this ? (or the virtual interface that seems to exist between the two). ?
I have yet to find any documentation or examples that actually work for this setup.
And how is someone supposed to find the documentation that would be applicable to this specific setup ? (which type of QoS is available, CBFQ, Fair-queue etc etc.)
I am getting rather tired of trial and error getting me nowhere.
This is with
Cisco IOS Software, C870 Software (C870-ADVSECURITYK9-M), Version 12.4(15)T9, RELEASE SOFTWARE (fc5)
(It came with the inferior advanced-security that supports only 1 user configurable VLAN, not sure how to purchase the real "advanced IP" software that gives it the advertised functionality).
Solved! Go to Solution.
12-14-2010 05:58 AM
Hi Jean-Francois,
You can configure CBWFQ and use an LLQ to achieve this. For PPPoE you will need to limit the bandwidth by using a shaper out of your ethernet interface with a CIR corresponding to your DSL bandwidth. You'll then be able to configure the queuing in a child policy, and define an LLQ for voice, you don't need to specif anything for class-default as it will use all the remaining bandwidth available, including what is reserved for the LLQ if there is no traffic flowing into it.
An example for this setup can be find on this doc:
http://www.cisco.com/en/US/tech/tk543/tk545/technologies_tech_note09186a00800b2d29.shtml
You should get something similar to this:
policymap parent_shaping class class-default shape average |
Verify your config and curent usage with show policy-map interface
12-14-2010 05:58 AM
Hi Jean-Francois,
You can configure CBWFQ and use an LLQ to achieve this. For PPPoE you will need to limit the bandwidth by using a shaper out of your ethernet interface with a CIR corresponding to your DSL bandwidth. You'll then be able to configure the queuing in a child policy, and define an LLQ for voice, you don't need to specif anything for class-default as it will use all the remaining bandwidth available, including what is reserved for the LLQ if there is no traffic flowing into it.
An example for this setup can be find on this doc:
http://www.cisco.com/en/US/tech/tk543/tk545/technologies_tech_note09186a00800b2d29.shtml
You should get something similar to this:
policymap parent_shaping class class-default shape average |
Verify your config and curent usage with show policy-map interface
12-14-2010 10:00 PM
Many thanks.
The examples I had seen had a "default-class" definition in the child policy-map. And I had tried some different variations of that default-class to no avail. Removiong it completely (from child policy) seems to do the trick. I guess I had not found the right incantation to make it compatible with a "policy 128" in the non default lass above it.
BTW: For G711u voice traffic, is the outbound bandwidth expected to be constant (since it is not compressed) or is slilence eliminated, causing variable bandwidth use during a phone call ?
Here is the output from the show policy-map:
Also, while I am at it:
When the router boots, it complains about the voip-parent policy-map being non exitant. Once booted, I can manually add it to the interface without problem. If I place the definitions for the policy-map/class-map before the interface definitions, then the router does not complain. Is this normal ?
(I had always read that order statements/sections in config files was not important).
Booting output from serial port: (871W router).
Installed image archive
Cisco 871W (MPC8272) processor (revision 0x300) with 118784K/12288K bytes of memory.
Processor board ID FHK13257484
MPC8272 CPU Rev: Part Number 0xC, Mask Number 0x10
5 FastEthernet interfaces
1 802.11 Radio
128K bytes of non-volatile configuration memory.
28672K bytes of processor board System flash (Intel Strataflash)
% policy map voip-parent not configuredSelected country Canada
And while I am at it:
Right now, I have:
!
!
policy-map voip-QoS
class class-voip
priority 128
!
policy-map voip-parent
class class-default
shape average 500000
service-policy voip-QoS
For any bandwidth leftover after the voip's 128kbps, I'd like to give priority to outbound web traffic (from my web server).
I assume I would need to update policy-map voip-QoS (the child one) to add "class class-web" followed by some other statement.
What other statement would apply to this router to give "class-web" priority over any other outbound traffic ?
Again, this is for an 871W that has a dialer 1 interface for PPPoE, but output is through the FA-4 ethernet to an external modem.
12-15-2010 01:12 AM
I'm glad to read that the proposed config worked!
I'm not sure for G711u, I'm not a voice guy at all ;-) From google, it seems that G711 is constant bit rate but I didn't find for G711u, feel free to ask the question inside the "Collaboration, Voice and Video" voice community I'm sure someone should know.
The error message at bootup is not expected. "policy map voip-parent not configured" at bootup either means that you didn't configure the policy map voip-parent before the reload, that you forgot to save the configuration, a typo, or that there is a bug... Order of configuration does have an importance in IOS, depending on what you configure, and in the case for policy-map you can not apply a non-existing policy.
For the class-web, you should reserve bandwidth for it, this way when there is congestion the web traffic will always get it's defined bandwidth:
policy-map voip-QoS
class class-voip
priority 128
class class-web
bandwidth
If you want to know more about priority and bandwidth, I quickly checked this doc and it seems good. It also explain how remaining bandwidth is distributed: http://www.cisco.com/en/US/tech/tk543/tk757/technologies_tech_note09186a0080103eae.shtml
12-15-2010 01:24 AM
I tested the config a couple of times. Each time, I tftp the config to startup-config and reboot router.
class-map match-any class-voip
description VOIP traffic QOS
match access-group name ACLvoip
!
!
policy-map voip-QoS
class class-voip
priority 128
!
policy-map voip-parent
class class-default
shape average 695000
service-policy voip-QoS
!
i
interface FastEthernet4
...
service-policy output voip-parent
Works fine at bootup.
BUT if I put the class-map and policy-map statements after all the interface definitions, nat and acl definitions, I get the "policy map unknown" message during boot, but they can be manually added after boot. The acl "ACLvoip" used in the class-map resolves fine in the above config order, despite it being defined further down.
I guess I can try to progressively move the statements down in the config to see where it starts to fail.
The problem is reproducible in my config though.
Not sure whether I should report it and if so how.
12-15-2010 03:44 AM
The ACL is a special case, you can configure them before being defined, I think the default behavior would be a permit any any if they are not configured. However this is not true for policy-map, you have to define them before applying them.
This is why when you compute a "show run" you'll first see the definition of policy-map, then interfaces, then at the end the access-lists.
If I understood correctly, the way you do your copy tftp will override the startup config which is a simple text file that is being parsed line by line at bootup. I didn't test, but I'm pretty sure the router will not rearrange the lines when you override the startup text file. Therefore, when booting with your manually modified config file the router will first try to apply a service policy to the interface, and since it doesn't know it yet it fails.
You should better try to modify the config when the router is running, then do a "copy run start" (or just "write mem", or better "wr"). When doing that, the router will compute the running configuration text file, order the lines correctly so that it works at bootup (it does the same when you do "show run", it compiles the txt display on the fly and order it correcly), and then override the startup config.
12-16-2010 12:55 AM
Thanks for correcting the misconception I had.
What I'll do is look at the order of commands in the running config and apply it to the source file. This way the source file on a computer gets to keep comments. Then I can copy it back to the router.
I'll just have to keep in mind that the router can help me choose the proper order for commands whenever I add new sections.
08-16-2016 04:34 PM
Now here is a (late) update - these guys at cisco have heard several admin-calls and changed their policy :) (no pun intended)
IOS 15.6(3)M now has service-policy support for dialers based on pppoe.
in fact it simply kills service-policy maps that are bound to the interface hosting the dialer.
Regards, hk
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