Dear reader, I'm not updating these pages anymore. If you have tc or ip related questions, you can post them on the LARTC mailing list.

I received an email of Gael Assofi regarding the ingress qdisc. He was able to get it working. This is the mail:

Hello, while starting to experiment with tc/iproute, I discovered your page, and found it was of interest to me.

I am currently working on tools to help on remotely manage a network and thus I had to find some tools to monitor bandwidth, I found one called nettop, which displays an by protocol percentage use of the network. (I have also a modified version displaying bandwidth used by hosts re-named bwtop)

Regarding the tests you made, I can contribute with one I just tried : ingress scheduler. Due to limited office connectivity I wanted to control the incoming bandwidth for my own PC.

Currently using rh7.1 (I'm too lazy to switch to debian ;-) ), I had troubles with tc, since it's not compiled with ingress support.

I had to install source rpm, and modify the config file before rebuild.

rpm -i iproute-2.2.4-14.src.rpm
cd /usr/src/redhat/SPECS
rpm -bp iproute.spec

 # edit the file /usr/src/redhat/BUILD/iproute2/Config, to match
 # then :

rpm -bi iproute.spec --short-circuit
I had to copy the binaries from /var/tmp, but this could have been avoided by specifying some rpm switch :)

after this everything went fine :

 # suppose you want to limit incoming web traffic (you are the client not the server so the _source_ port is 80) mark the packets with 1 in netfilter
 # the handle seems to require to have value ffff (why ???)
/sbin/iptables -A PREROUTING -i eth0 -t mangle -p tcp --sport 80 -j MARK --set-mark 1
 # then add the queuing discipline
tc qdisc add dev eth0 handle FFFF: ingress
 # limit bw to 64kbit. I'm not really sure of the burst and mtu values...
tc filter add dev eth0 parent ffff: protocol ip prio 50 handle 1 fw police rate 64kbit burst 2400 mtu 9k drop flowid :1

and it worked very fine...