All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexandru Dragoi <alex@zoomnet.ro>
To: lartc@vger.kernel.org
Subject: [Fwd: Re: [LARTC] how to setup massive traffic shaping? (2 class
Date: Wed, 20 Sep 2006 13:01:09 +0000	[thread overview]
Message-ID: <45113B95.1080400@zoomnet.ro> (raw)

[-- Attachment #1: Type: text/plain, Size: 1 bytes --]



[-- Attachment #2: Re: [LARTC] how to setup massive traffic shaping? (2 class B nets) --]
[-- Type: message/rfc822, Size: 5671 bytes --]

From: Alexandru Dragoi <alex@zoomnet.ro>
To: "????? ?????" <safin.timur@gmail.com>
Subject: Re: [LARTC] how to setup massive traffic shaping? (2 class B nets)
Date: Wed, 20 Sep 2006 16:00:29 +0300
Message-ID: <45113B6D.8010803@zoomnet.ro>

????? ????? wrote:
> Hello, Alexandru
> I just adopt your script for B class net
> is it correct?
>
> tc qdisc add dev eth0 root handle 1: htb
> tc class add dev eth0 parent 1: classid 1:f000 htb rate 620mbit
>
>
> tc filter add dev eth0 parent 1: protocol ip prio 5 handle 0: u32 
> divisor 256
> tc filter add dev eth0 parent 1: prio 5 u32 ht 800:: match ip dst
> 172.26.0.0/16 hashkey mask 0x0000ff00 at 16 link 0:
>
>
>
> for i in `seq 0 255` ; do
> div=`printf "%x" $i`
> let j=$i+1
> tc filter add dev eth0 parent 1: protocol ip prio 5 handle $j: u32 
> divisor 256
> tc filter add dev eth0 parent 1: prio 5 u32 ht 0:$div: match ip dst
> 172.26.$i.0/24 hashkey mask 0x000000ff at 16 link $j:
>
> for q in `seq 0 255` ; do
> d=`printf "%x" $q`
> clsid=$[$i*256+$q]
> tc class add dev eth0 parent 1:f000 classid 1:$clsid htb rate 64kbit
> tc filter add dev eth0 parent 1: prio 5 u32 ht $j:$d match ip dst
> 172.26.$i.$q flowid 1:$clsid
> done
> done
>
>
>
> 2006/9/20, Alexandru Dragoi <alex@zoomnet.ro>:
>> ????? ????? wrote:
>> > Hello!
>> > yes, I no about 65000 rules and just add third interface to server. )
>> > what about
>> > tc filter add dev imq0 parent 1: prio 5 u32 ht 800:: match ip dst
>> > 172.22.0.0/17 hashkey mask 0x00007f00 at 16 link 0: ?
>> > shouldnt hashkey mask be 0x00007fff instead of 0x00007f00 ?
>> > and if it should be 0x00007f00 how do you calculate it?
>> >
>> >
>> > 2006/9/20, Alexandru Dragoi <alex@zoomnet.ro>:
>> >> ????? ????? wrote:
>> >> > Hello
>> >> > I have 2 class-B networks (172.22.0.0/16 and 172.23.0.0/16, over 
>> 130k
>> >> > of ip's) and need to setup
>> >> > traffic tbf shapers with 64kb/s for each ip from 172.22.0.0/16 and
>> >> > 128kb/s for each ip from 172.23.0.0/16
>> >> > just read lartc and don't understand how to use u32 for decreasing
>> >> > number of rules and hashing
>> >> > _______________________________________________
>> >> > LARTC mailing list
>> >> > LARTC@mailman.ds9a.nl
>> >> > http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc
>> >> First you need imq. This because you can't have more than 65536 
>> classes.
>> >> Having 8 imqs you will be able to use 4 for download and 4 for 
>> upload.
>> >> However You will tell us if the machine will support everything 
>> :). So
>> >> you will divide the big class /15 into 4 classes /17
>> >>
>> >> iptables -t mangle -A POSTROUTING -o $clients_eth -d 172.22.0.0/17 -j
>> >> IMQ --todev 0
>> >>
>> >> and:
>> >>
>> >> tc qdisc add dev imq0 root handle 1: htb #Or whatever you use
>> >> tc class add dev imq0 parent 1: classid 1:f000 htb rate 620mbit #or
>> >> whatever ...
>> >>
>> >>
>> >> tc filter add dev imq0 parent 1: protocol ip prio 5 handle 0: u32
>> >> divisor 128
>> >> tc filter add dev imq0 parent 1: prio 5 u32 ht 800:: match ip dst
>> >> 172.22.0.0/17 hashkey mask 0x00007f00 at 16 link 0:
>> >>
>> >> for i in seq `0 127` ; do
>> >> div=`printf "%x" $i`
>> >> let j=$i+1
>> >> tc filter add dev imq0 parent 1: prio 5 u32 ht 0:$div: match ip dst
>> >> 172.22.$i.0/24 hashkey mask 0x000000ff at 16 link $j:
>> >> for q in seq `0 255`; do
>> >> d=`printf "%x" $q`
>> >> clsid=$[$i*256+$q]
>> >> tc class add dev imq0 parent 1: classid 1:$clsid htb rate 128kbit
>> >> tc filter add dev imq0 parent 1: prio 5 u32 ht $j:$d match ip dst
>> >> 172.22.$i.$q flowid 1:$clsid
>> >> done
>> >> done
>> >>
>> >> I hope i'm not missing something. For 172.22.128.0/17, instead of
>> >> 172.22.$i you will have 172.22.$[$i+128]
>> >> On other imq of course. For upload you just change dst with src, 
>> and "at
>> >> 16" into "at 12"
>> >>
>> >>
>> >> I'm really curious how it will work :D and how much it will take to
>> >> run it.
>> >>
>> >>
>> >>
>> Also, before:
>>
>> tc filter add dev imq0 parent 1: prio 5 u32 ht 0:$div: match ip dst
>> 172.22.$i.0/24 hashkey mask 0x000000ff at 16 link $j:
>>
>> Add line:
>>
>> tc filter add dev imq0 parent 1: protocol ip prio 5 handle $j: u32
>> divisor 256
>>
>> Now, you need both download and upload, so maybe upload goes via a
>> single card. Also the maximum number of divisor is 256, so a mask should
>> have only 8 bits set to 1. And 0x00007f00 will match only the last 7
>> bits on 3rd number on an ip address. So ip 172.22.45.2 will go,
>> considering the hashkey mask, to entry (45 & 0x7f), then represented in
>> hex, which is 0x23. The & means bitwise and, just how hashkey algoritm
>> works. Applying the that mask to ip 172.22.173.8 will also generate
>> 0x23. More about these you have to do some binary operations. Means you
>> will run the for loop for i in `seq 128 255`.
>>

If you skip 172.26.240.0 (i is 240, j is 0). It is eaxctly classid 
0xf000 :D Now, you can also try it on a different machine for testing, 
as i may try it too. I guess you are familiar with HTB, i use 620mbit 
because I believe you may have a stm4 connection. If it is gigabit you 
can raise it. The script seems correct.


[-- Attachment #3: Type: text/plain, Size: 143 bytes --]

_______________________________________________
LARTC mailing list
LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

                 reply	other threads:[~2006-09-20 13:01 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=45113B95.1080400@zoomnet.ro \
    --to=alex@zoomnet.ro \
    --cc=lartc@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.