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 # TC_CONFIG_DIFFSERV=y # TC_CONFIG_ATM=n # then : rpm -bi iproute.spec --short-circuitI 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...