Patch to add burst to dummynet ?

Luigi Rizzo rizzo at icir.org
Tue Feb 21 08:25:30 PST 2006


On Tue, Feb 21, 2006 at 08:15:37AM -0800, Donald Baud wrote:
> > On Tue, Feb 21, 2006 at 06:57:10AM -0800, Donald
> > Baud wrote:
> > > 
> > > 
> > > --- Luigi Rizzo <rizzo at icir.org> wrote:
> > ...
> > > > of course you get the same throughput!
> > > > the burst is just a constant in the time it
> > takes to
> > > > transfer data,
> > > > and it is independent of the data size.
> > irrespective
> > > > of the file
> > > > size you'll just finish (burst_size/bandwidth)
> > > > seconds earlier.
> > > > 
> > > > cheers
> > > > luigi
> > > 
> > > I ran two tests with the following ipfw rules:
> > > ipfw pipe 10 config bw 10kbit/s
> > > ipfw add 5 pipe 10 ip from 10.0.0.1 to me
> > > == with: if (len_scaled > q->numbytes) ==
> > > wget --progress=dot some_file
> > >     0K .......... ..........  0%    1.13 KB/s
> > >    50K .......... ..........  1%    1.14 KB/s
> > >   100K .......... ..........  2%    1.14 KB/s
> > >   150K .......... ..........  3%    1.14 KB/s
> > > 
> > > == with: if (len_scaled > q->numbytes + 100000 )
> > > wget --progress=dot some_file
> > >     0K .......... ..........  0%    1.13 KB/s
> > >    50K .......... ..........  1%    1.14 KB/s
> > >   100K .......... ..........  2%    1.14 KB/s
> > >   150K .......... ..........  3%    1.14 KB/s
> 
> > 
> > and so ? as i said, the throughtput is the same, you
> > just see things happening a little bit (very little,
> > usually) earlier,
> > and your experiment has no notion of time, and
> > furthermore there are so many factors influencing
> > the throughput and the numbers printed by wget
> > that it's hard to tell how can you see the
> > difference.
> > 
> > assuming, of course, that the patch i suggested
> > works, which i
> > think but cannot guarantee.
> > 
> > cheers
> > luigi
> > 
> 
> Are you saying that wget bandwidth reading is
> incorrect? I expected to see full speed of the pipe
> for the first 100KBytes.

if you see just one line above your patch, len_scaled is computed as

        int len_scaled = p->bandwidth ? len*8*hz : 0 ;

so your '100000' correspond (with HZ=1000) to an actual burst
of 100 bits or 12.5 bytes so hardly measurable.
secondly, as i said the throughput is limited by many many factors
even without dummynet (or just because you have traffic going through
other pipes, etc.).

finally, i don't know how wget computes times so it may
be correct or not, i have no idea. since many programs
do wrong things in computing bandwidths i wouldn't
give for granted that wget is correct in all situations.

bye
luigi


> I even commented out:
> /*
>         if (len_scaled > q->numbytes)
>             break ; 
> */
> While I would have expected full throughput, I got
> only ~10X the speed of the pipe:
> 
>     0K .......... ..........  0%    8.30 KB/s
>    50K .......... ..........  1%   20.70 KB/s
>   100K .......... ..........  2%   13.80 KB/s
>   150K .......... ..........  3%   13.80 KB/s
> 
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> _______________________________________________
> freebsd-ipfw at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ipfw
> To unsubscribe, send any mail to "freebsd-ipfw-unsubscribe at freebsd.org"


More information about the freebsd-ipfw mailing list