Re: [PATCH net-next] netem: fix classful handling
From: Eric Dumazet <hidden>
Date: 2011-12-29 17:15:55
Le jeudi 29 décembre 2011 à 17:52 +0100, Hagen Paul Pfeifer a écrit :
* Eric Dumazet | 2011-12-29 10:12:02 [+0100]:quoted
quoted
Also, the whole tfifo idea is only to support the wierd idea that if doing random delay that packets should get reordered based on the results of the random value; it was an behavior some users wanted because that is what NISTnet did.tfifo supports a time ordered queuing, wich mimics some jitter in the network. This seems quite useful. I see what you suggest : adding 'time_to_send' in the generic qdisc cb. But it makes no sense if we attach a reordering qdisc, like SFQ : A 'high prio' packet will block the whole netem because we'll have to throttle since this packet time_to_send will be in the future, while many other elligible packets are in queue.In other words netem jitter and a qdisc !tfifo will not work. Correct? The rate extension also peak the last packet to get the reference time (assuming a strict ordering):
Yep, current situation is borked. It assumes we _use_ tfifo, for delay jitters but also for rate extension.
[...] now = netem_skb_cb(skb_peek_tail(list))->time_to_send; [...] We should avoid a different (unseeable) behavior depending on the queue (tfifo, SFQ). Another point: operate netem and qdisc on the same computer can lead to timing abnormalities. In our test setups we operate qdisc/tcp/whatever setups and netem on more then on computer.
After my patch you could use netem as a delay module before a complex qdisc setup for example. [ Simulating a 10ms delay on a 10Gigabit link is expensive, since you need to allow up to ~150.000 packets in tfifo. Maybe we should switch to tbfifo [giving a limit in bytes, not packets ] ]