Subject: Re: [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock().

From: Stephen Hemminger <[email-masked]>
Date: Tue, 26 Aug 2008 08:50:29 -0400

On Tue, 26 Aug 2008 22:41:53 +1000
Herbert Xu <[email-masked]> wrote:

> (Adding Jamal to the cc)
> 
> On Tue, Aug 26, 2008 at 08:24:55AM -0400, Stephen Hemminger wrote:
> > 
> > The problem with netem as child of TBF is that TBF counts the number
> > of packets in the queue to determine the rate. Therefore TBF gets confused
> > about the rate because of the large number of packets that are held in
> > netem when delaying. 
> 
> OK I'm probably missing something.  I can't find any code in TBF
> that looks at the number of packets held in the queue.  All it
> does is look at the dequeued packet and whether we have enough
> tokens to send it right now.
> 
> In any case, looking at the number of packets in the queue sounds
> broken for TBF as the packets could be held in upper-level queues
> which are invisible.
> 
> Cheers,
> -- 
> Visit Openswan at http://www.openswan.org/
> Email: Herbert Xu ~{PmV>HI~} <[email-masked]>
> Home Page: http://gondor.apana.org.au/~herbert/
> PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Last time I tried TBF(100kbit) { netem(+100ms) } it gave different answers
than netem(+100ms) { TBF(100kbit) }.  

I would prefer a peek() to the current dequeue/requeue.
An alternative would be to have netem keep a parallel data structure with
the time to send for all packets, but that would be assuming the underlying
qdisc's were work conserving.