[Gllug] Bandwidth shaping
Vincent AE Scott
gllug at codex.net
Wed Apr 3 18:53:27 UTC 2002
Rev Simon Rumble(simon at rumble.net)@Wed, Apr 03, 2002 at 03:45:10PM +0100:
> Okay I followed through all those references and discovered why I'd
> had problems before: you need to patch the kernel and use a patched
> tc. Once I started doing that, I started to get results.
>
> Results for my 115k HomeChoice (ppp via set-top-box over ATM over
> ADSL) are good. Running at full tilt (kernel download from local
> mirror) the latency of pings went from 400ms to 400ms. A tenfold
> improvement.
>
<g> or no change.
> 400ms might not sound like much but it's WAY better than four seconds
> when composing an email. When I move to ADSL in two weeks, I suspect
> it'll be a bit lower.
>
> Yay. Thanks for all the tips folks. Now does anyone know how you can
> monitor what's happening in real time? i.e., how many packets are
> coming through in each class and what is the shaper doing?
hmm, no. but you can flag packets using iptables, such that they can be
shaped by tc. perhaps you could use that in contion with eitehr
iptables logging, or the external ulogd program to correalate what
thruput you were achieving.
the subject of monitoring crops up on the netfilter list every now and
again, ihave yet to see a really awesome solution to it. iptraf is
kinda cute, but that just snoops on ther interface.
alternatively you could just periodically dump out that stats for the
qdisc and use that. not realtime tho.
# tc -s class show dev ppp0
# tc -s qdisc show dev ppp0
yet another alternative, you have the source code...
>
> Inserted below, my hacked version. The only changes from
> http://lartc.org/HOWTO//cvs/2.4routing/output/2.4routing-15.html#ss15.8
> are burst rate and link speed.
>
> #!/bin/bash
>
> # The Ultimate Setup For Your Internet Connection At Home
> #
> #
> # Set the following values to somewhat less than your actual download
> # and uplink speed. In kilobits
> DOWNLINK=75
> UPLINK=75
> DEV=ppp0
>
> # clean existing down- and uplink qdiscs, hide errors
> tc-htb qdisc del dev $DEV root 2> /dev/null > /dev/null
> tc-htb qdisc del dev $DEV ingress 2> /dev/null > /dev/null
>
> ###### uplink
>
> # install root HTB, point default traffic to 1:20:
>
> tc-htb qdisc add dev $DEV root handle 1: htb default 20
>
> # shape everything at $UPLINK speed - this prevents huge queues in your
> # DSL modem which destroy latency:
>
> tc-htb class add dev $DEV parent 1: classid 1:1 htb rate ${UPLINK}kbit burst 3k
>
> # high prio class 1:10:
>
> tc-htb class add dev $DEV parent 1:1 classid 1:10 htb rate ${UPLINK}kbit \
> burst 3k prio 1
>
> # bulk & default class 1:20 - gets slightly less traffic,
> # and a lower priority:
>
> tc-htb class add dev $DEV parent 1:1 classid 1:20 htb rate $[9*$UPLINK/10]kbit \
> burst 3k prio 2
>
> # both get Stochastic Fairness:
> tc-htb qdisc add dev $DEV parent 1:10 handle 10: sfq perturb 10
> tc-htb qdisc add dev $DEV parent 1:20 handle 20: sfq perturb 10
>
> # TOS Minimum Delay (ssh, NOT scp) in 1:10:
> tc-htb filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
> match ip tos 0x10 0xff flowid 1:10
>
> # ICMP (ip protocol 1) in the interactive class 1:10 so we
> # can do measurements & impress our friends:
> tc-htb filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \
> match ip protocol 1 0xff flowid 1:10
>
> # To speed up downloads while an upload is going on, put ACK packets in
> # the interactive class:
>
> tc-htb filter add dev $DEV parent 1: protocol ip prio 10 u32 \
> match ip protocol 6 0xff \
> match u8 0x05 0x0f at 0 \
> match u16 0x0000 0xffc0 at 2 \
> match u8 0x10 0xff at 33 \
> flowid 1:10
>
> # rest is 'non-interactive' ie 'bulk' and ends up in 1:20
>
>
> ########## downlink #############
> # slow downloads down to somewhat less than the real speed to prevent
> # queuing at our ISP. Tune to see how high you can set it.
> # ISPs tend to have *huge* queues to make sure big downloads are fast
> #
> # attach ingress policer:
>
> tc-htb qdisc add dev $DEV handle ffff: ingress
>
> # filter *everything* to it (0.0.0.0/0), drop everything that's
> # coming in too fast:
>
> tc-htb filter add dev $DEV parent ffff: protocol ip prio 50 u32 match ip src \
> 0.0.0.0/0 police rate ${DOWNLINK}kbit burst 5k drop flowid :1
>
>
> --
> Rev Simon Rumble <simon at rumble.net>
> www.rumble.net
> Send email with subject "send key pub" for public key.
>
> A lifetime of listening to disco music is a high price to pay
> for one's sexual preference
>
> - Quentin Crisp
--
PGP key: http://codex.net/pgp/pgp.asc
Keyboard error. Hit F1 to resume.
--
Gllug mailing list - Gllug at linux.co.uk
http://list.ftech.net/mailman/listinfo/gllug
More information about the GLLUG
mailing list