I'll cut and paste it in here. If you could let me know wether it makes any sense to you...
#!/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 DEV=ippp0
# clean existing down- and uplink qdiscs, hide errors tc qdisc del dev $DEV root 2> /dev/null > /dev/null tc qdisc del dev $DEV ingress 2> /dev/null > /dev/null
###### uplink
# install root HTB, point default traffic to 1:20:
tc qdisc add dev $DEV root handle 1: htb default 20 r2q 1
# shape at 60kbit (for 64kbit theoretical) tc class add dev $DEV parent 1: classid 1:1 htb rate 60kbit
# high prio class 1:10: # give it almost all bandwith guaranteed tc class add dev $DEV parent 1:1 classid 1:10 htb rate 56kbit prio 1
# bulk & default class 1:20 - give it little bandwith and ceil the max
# bandwith it can borrow to 50k so that we preserve low pings even when
# doing large transfers
tc class add dev $DEV parent 1:1 classid 1:20 htb rate 4kbit ceil 56kbit prio 2
# Asterisk traffic should be in the interactive class tc filter add dev $DEV parent 1:0 protocol ip prio 10 u32 \ match ip sport 4569 0xffff \ match ip protocol 17 0xff \ flowid 1:10
# TOS Minimum Delay (ssh, NOT scp) in 1:10:
tc 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 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 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 qdisc add dev $DEV handle ffff: ingress
EOF
Regards, Jean-Michel.

