On Wednesday 11 June 2003 12:26, Emmanuel SIMON wrote: > First, thank you Stef for answering. > That's what I understood. I think my question was not enough precise (??) > > My reel question/problem is why are parameters of the bandwidth (such as > rate, burts ...) set on classes rather than on qdiscs ? You have to see a class as a virtual channel. Each class is responsible for the packets that it holds. So the rate / burst / ceil and so one are only valid for that class. So you have to put packets in the same class that somehow are the same. Like all telnet/ssh packets. So you can give that class a small burst and a low latency. Or you put the packets from 1 client in 1 class so all the traffic to the client is one 1 big channel and he is reponsible for this. > I guess a class should only map a flow and should not know how this flow > will be sent. Especially that classes don't send packets. What is the > reason why it is done so ? And what if i don't specify parameters fir a > leaf class ? Does it herit from the parent ? A class is not reponsible for sending the packets because the class is only used to create the virtual channels (and so to limit the packets in that class). Once a packet is dequeued from a virtual channel (and so is dequeued form a class) it's give to the qdisc attached to that class. So you can add a small fifo qdisc to that class so packets are send fast. Or you can add a sfq qdisc so each flow has his own little queue. So you have a lot of flexibility. You can even add a classfull qdisc to a class, but that's just a waste of CPU cycles and will only add extra delays. Each class needs it's own parameters when you create it. It will not inheret something from its parent. > Thanks once more This is even for more confusing when I have to think about ut. This is in no docs explained, but I don't think that I'm telling big lies. Stef -- stef.coene@xxxxxxxxx "Using Linux as bandwidth manager" http://www.docum.org/ #lartc @ irc.oftc.net