Regarding rate limiting via TC. I've observed that while using cbq, changing the bandwidth parameter while the rate remains constant, causes the resultant egress rate, measured via snmp monitoring of the eth interface, to conversely rise or fall. That is, increasing the bandwidth lowers the resultant egress rate and lowering the bandwidth increases the resultant egress rate.
tc qdisc add dev eth4 root handle 1: cbq bandwidth 10mbit avpkt 1000
tc class add dev eth4 parent 1:0 classid 1:1 est 1sec 8sec cbq \
bandwidth 10mbit rate 1mbit bounded isolated \
allot 1514 cell 8 weight 1 prio 1 maxburst 20 avpkt 1000
tc filter add dev eth4 parent 1:0 protocol ip prio 1 u32 match u8 17 0xff at 9 flowid 1:1
The cards are 10/100 cards, which are connected to a switch we've limited to 10mbit, full duplex. We vary the bandwidth setting from as low as 3mbit to 10 to 100mbit, and each increase sees a corresponding descrease in egress rate, and vice versa. Is this normal bahaviour? What should we set the bandwidth to - the rate established by the switch?