[ previous ] [ next ] [ threads ]
 
 From:  Vincent Fleuranceau <vincent at bikost dot com>
 To:  Peter Parnican <peter at procad dot sk>
 Cc:  m0n0wall at lists dot m0n0 dot ch
 Subject:  Re: [m0n0wall] shaping
 Date:  Wed, 20 Oct 2004 10:15:52 +0200
-------- Original Message --------

> Here is What i did:
> 
> 1.step: enable the Magic shaper wizard (set max and min. bandwith 
> 128Kb) 2.step: pipes (test) - add 64Kbit/s, delay and mask -none 
> 3.step: Edit queue, choosed pipe (test), Weight -1, mask -none 4. 
> step: Edit rule, targe -(test), interface LAN, protocol -any, source
>  single host 192.168.100.2 othersare left default
> 
> What I did wrong??

Don't use the Magic shaper Wizard "as is" for your specific case (of 
course you can learn from it - see below).

You need to create 4 distinct pipes (2 download + 2 upload) with (at 
least) 8 queues and 8 rules with appropriate weight and bandwidth 
settings (1/4 and 3/4 of total bandwidth if I understand well your 
situation). See below:

User 1:

-> Pipe 1 = 3/4 of total upload bandwidth

    -> Queue 1 = High Priority Upload (weight = 90)
       ->  rules for ACK Priorization
           + traffic you want to priorize (DNS + ...)

    -> Queue 2 = Low priority Upload (weight = 10)
       ->  default (catch-all) rule for all other traffic

-> Pipe 2 = 3/4 of total download bandwidth

    -> Queue 3 = High Priority Download (weight = 90)
       ->  rules for ACK Priorization
           + traffic you want to priorize (DNS + ...)

    -> Queue 4 = Low priority Download (weight = 10)
       ->  default (catch-all) rule for all other traffic

User 2:

-> Pipe 3 = 1/4 of total upload bandwidth

    -> Queue 5 = High Priority Upload (weight = 90)
       ->  rules for ACK Priorization
           + traffic you want to priorize (DNS + ...)

    -> Queue 6 = Normal priority Upload (weight = 10)
       ->  default (catch-all) rule for all other traffic

-> Pipe 4 = 1/4 of total download bandwidth

    -> Queue 7 = High Priority Download (weight = 90)
       ->  rules for ACK Priorization
           + traffic you want to priorize (DNS + ...)

    -> Queue 8 = Normal priority Download (weight = 10)
       ->  default (catch-all) rule for all other traffic


Of course, each rule must be linked to the corresponding queue and each 
queue must be linked to the corresponding pipe.

Nota: the problem with this type of setup is that you can't "borrow" 
bandwidth from another pipe (because of how dummynet works), whereas you 
can "share" bandwidth between users belonging to the the same pipe (the 
mask parameter makes possible to share bandwidth evenly). This means: 
even if your neighbour "consumes" nothing in his pipe, you won't be able 
to use his 1/4 of bandwidth...

As a starting point, I would suggest Adam Nelleman's Traffic shaper 
"Manual" at:
http://m0n0.ch/wall/list/?action=show_msg&actionargs[]=35&actionargs[]=88

If there's only one user in each pipes set, I think the only thing you 
have to care of is the the TCP ACK priorization.

See: http://wiki.m0n0.ch/wikka.php?wakka=NineTwo

If you don't want to create all this stuff from zero, another approach 
would be to use the Magic Shaper Wizard to generate rules and queues for 
you and then duplicate them into a second "set" and finally assign each 
set of rules and queues to a different upload/download pipe pair.

This can be easily done by editing the contents of the config.xml file. 
If you do copy/paste, don't forget to re-number the rules and the queues 
(<targetqueue> and <targetpipe> values) for the second user's set.

Hope this helps...

-- Vincent