All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Beverley <andy@andybev.com>
To: netfilter@vger.kernel.org
Subject: Creating an equivalent to ESFQ using flow classifier
Date: Sun, 15 Mar 2009 16:29:23 +0000	[thread overview]
Message-ID: <328bad7c0259fd816ae31c8405313e1e@localhost> (raw)

I have a server which I am using to share an ADSL line between a number of
users. I am successfully shaping traffic based on type using 4 different
classes, but I also want to share traffic within those classes evenly
between computers (rather than between connections). I used to use ESFQ for
this, but am trying to move to the new flow classifier as described in
http://www.mail-archive.com/netdev@vger.kernel.org/msg60634.html

I have set up the following rules. However, if I start 4 downloads on one
PC and 1 download on another PC, then the first PC will get 4/5 of the
available bandwidth and the second PC one 1/5. I would expect them to get
half each. I am using HTB to shape between each class.

# Add a HTB qdisc to the root device
tc qdisc add dev eth0 root handle 1: htb

# Rate limit it
tc class add dev eth0 parent 1: classid 1:1 htb rate 2200kbit

# Add 4 classes to it for different traffic
tc class add dev eth0 parent 1:1  classid 1:10 htb \
        rate 100kbit ceil 100kbit prio 0
tc class add dev eth0 parent 1:1  classid 1:30 htb \
        rate 1000kbit ceil 1000kbit prio 1
tc class add dev eth0 parent 1:1  classid 1:40 htb \
        rate 1000kbit ceil 1000kbit prio 2
tc class add dev eth0 parent 1:1  classid 1:60 htb \
        rate 100kbit ceil 100kbit prio 3

# Add SFQ qdisc to each HTB class
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10
tc qdisc add dev eth0 parent 1:40 handle 40: sfq perturb 10
tc qdisc add dev eth0 parent 1:60 handle 60: sfq perturb 10

# Filter the traffic to each class based on MARK
tc filter add dev eth0 parent 1:0 protocol ip handle 10 fw flowid 1:10
tc filter add dev eth0 parent 1:0 protocol ip handle 30 fw flowid 1:30
tc filter add dev eth0 parent 1:0 protocol ip handle 40 fw flowid 1:40
tc filter add dev eth0 parent 1:0 protocol ip handle 60 fw flowid 1:60

# Share traffic between each PC evenly
tc filter add dev eth0 parent 10: protocol ip handle 10 flow hash keys \
        nfct-src,nfct-dst,proto,nfct-proto-src,nfct-proto-dst divisor 1024
tc filter add dev eth0 parent 30: protocol ip handle 30 flow hash keys \
        nfct-src,nfct-dst,proto,nfct-proto-src,nfct-proto-dst divisor 1024
tc filter add dev eth0 parent 40: protocol ip handle 40 flow hash keys \
        nfct-src,nfct-dst,proto,nfct-proto-src,nfct-proto-dst divisor 1024
tc filter add dev eth0 parent 60: protocol ip handle 60 flow hash keys \
        nfct-src,nfct-dst,proto,nfct-proto-src,nfct-proto-dst divisor 1024


It is the last part that I am unsure about. I do not get any errors with
the commands, but they do not seem to make any difference to the shaping.

I am using linux-2.6.26 on Debian Lenny but have also tried linux-2.6.28

Thanks in advance

Andy Beverley

             reply	other threads:[~2009-03-15 16:29 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-15 16:29 Andrew Beverley [this message]
2009-03-15 18:07 ` Creating an equivalent to ESFQ using flow classifier Nikolay S. Rybaloff
2009-03-15 18:53   ` Tom Eastep
2009-03-16 23:35   ` Andrew Beverley

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=328bad7c0259fd816ae31c8405313e1e@localhost \
    --to=andy@andybev.com \
    --cc=netfilter@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.