cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
6462
Views
0
Helpful
7
Replies

Cisco 871W : How to QoS on the dialer interface ?

jfmezei12
Level 1
Level 1

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).

1 Accepted Solution

Accepted Solutions

Raphael Wouters
Cisco Employee
Cisco Employee

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 
  service-policy child_queueing  
policymap child_queueing  
 class my-voip  
  priority 128 

interface fastethernet 4 
 pppoe enable  
 service-policy output parent_shaping

Verify your config and curent usage with show policy-map interface

View solution in original post

7 Replies 7

Raphael Wouters
Cisco Employee
Cisco Employee

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 
  service-policy child_queueing  
policymap child_queueing  
 class my-voip  
  priority 128 

interface fastethernet 4 
 pppoe enable  
 service-policy output parent_shaping

Verify your config and curent usage with show policy-map interface

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.

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

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.

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.

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.

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

Review Cisco Networking for a $25 gift card