All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andy Furniss <lists@andyfurniss.entadsl.com>
To: lartc@vger.kernel.org
Subject: Re: [LARTC] Divide bandwidth between 4 groups of ip with the same rate
Date: Fri, 30 Mar 2007 00:01:51 +0000	[thread overview]
Message-ID: <460C536F.9020101@andyfurniss.entadsl.com> (raw)
In-Reply-To: <27625364.1174434090073.JavaMail.root@ctps1>

CVEREDA@telefonica.net wrote:

Your bandwidth is likely to have overheads so you can't go too close to 
ISP quoted numbers. There are ways to make it more accurate for dsl, but 
you'll need to patch kernel/tc.

When shaping ingress traffic you have to sacrifice bandwidth or you will 
not build up a queue quick enough to have much effect. For ingress you 
should also limit the length of the queue so you drop packets.

If you really want to shape the whole eths aswell as the wan then the 
same applies - 100mbit nic is not 100mbit at ip level (in reality qdiscs 
on eth actually count as ip len + 14, but there are still more overheads 
than that).

Using htb default on eth will send your arp to that class unless you 
make filters to send it elsewhere  - this may seriously mess things up 
if you have default as a low bandwidth class with other traffic.

If this is dsl then given how assymetric the line is, a big chunk of 
your egress bandwidth may be eaten by acks - on dsl an ack uses 106 
bytes, but will be seen only as ip len + 14.

The rates on egress add up to 298 which if all full will not be capped 
by the parent setting of 256.

I think you are probably going over rate and getting a queue building up 
  in the modem. To test you could make a high prio class and send pings 
through it, you can then see when you are getting lagged out.

Andy.


> The script that I am using is:
> 
> #Shaping in eth0 for download traffic
> tc qdisc add dev eth0 root handle 1: htb default 50
> tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
> tc class add dev eth0 parent 1:1 classid 1:11 htb rate 80mbit ceil 100mbit
> tc class add dev eth0 parent 1:1 classid 1:12 htb rate 2700kbit ceil 2700kbit prio 7
> tc class add dev eth0 parent 1:12 classid 1:10 htb rate 300kbit ceil 2700kbit prio 7
> tc class add dev eth0 parent 1:12 classid 1:20 htb rate 300kbit ceil 2700kbit prio 7
> tc class add dev eth0 parent 1:12 classid 1:30 htb rate 300kbit ceil 2700kbit prio 7
> tc class add dev eth0 parent 1:12 classid 1:40 htb rate 300kbit ceil 2700kbit prio 7
> tc class add dev eth0 parent 1:12 classid 1:50 htb rate 30kbit ceil 270kbit prio 7
> tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.0/26 flowid 1:10
> tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.64/26 flowid 1:20
> tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.128/26 flowid 1:30
> tc filter add dev eth0 protocol ip parent 1:0 u32 match ip dst 192.168.0.192/26 flowid 1:40
> 
> #Shaping in eth1 for upload traffic marking packets at mangle
> tc qdisc add dev eth1 root handle 2: htb default 50 
> tc class add dev eth1 parent 2: classid 2:1 htb rate 10mbit
> tc class add dev eth1 parent 2:1 classid 2:11 htb rate 8mbit ceil 10mbit
> tc class add dev eth1 parent 2:1 classid 2:12 htb rate 256kbit
> tc class add dev eth1 parent 2:12 classid 2:10 htb rate 72kbit ceil 200kbit prio 7
> tc class add dev eth1 parent 2:12 classid 2:20 htb rate 72kbit ceil 200kbit prio 7
> tc class add dev eth1 parent 2:12 classid 2:30 htb rate 72kbit ceil 200kbit prio 7
> tc class add dev eth1 parent 2:12 classid 2:40 htb rate 72kbit ceil 200kbit prio 7
> tc class add dev eth1 parent 2:12 classid 2:50 htb rate 10kbit prio 7
> 
> tc qdisc add dev eth1 parent 2:10 handle 210: sfq perturb 10
> tc qdisc add dev eth1 parent 2:20 handle 220: sfq perturb 10
> tc qdisc add dev eth1 parent 2:30 handle 230: sfq perturb 10
> tc qdisc add dev eth1 parent 2:40 handle 240: sfq perturb 10
> 
> iptables -A FORWARD -t mangle -i eth0 -j MARK -s 192.168.0.0/26 --set-mark 1
> iptables -A FORWARD -t mangle -i eth0 -j MARK -s 192.168.0.64/26 --set-mark 2
> iptables -A FORWARD -t mangle -i eth0 -j MARK -s 192.168.0.128/26 --set-mark 3
> iptables -A FORWARD -t mangle -i eth0 -j MARK -s 192.168.0.192/26 --set-mark 4
> 
> tc filter add dev eth1 protocol ip parent 2:0 handle 1 prio 16 fw flowid 2:10
> tc filter add dev eth1 protocol ip parent 2:0 handle 2 prio 16 fw flowid 2:20
> tc filter add dev eth1 protocol ip parent 2:0 handle 3 prio 16 fw flowid 2:30
> tc filter add dev eth1 protocol ip parent 2:0 handle 4 prio 16 fw flowid 2:40
> 
> 
> 		 TERRA 
> 
> -->
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> LARTC mailing list
> LARTC@mailman.ds9a.nl
> http://mailman.ds9a.nl/cgi-bin/mailman/listinfo/lartc

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

  reply	other threads:[~2007-03-30  0:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-03-20 23:41 [LARTC] Divide bandwidth between 4 groups of ip with the same rate CVEREDA
2007-03-30  0:01 ` Andy Furniss [this message]
2007-03-31 10:39 ` Carlos Vereda-Alonso
2007-04-03  1:47 ` Andy Furniss

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=460C536F.9020101@andyfurniss.entadsl.com \
    --to=lists@andyfurniss.entadsl.com \
    --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.