atom feed8 messages in org.freebsd.freebsd-ipfwPatch to add burst to dummynet ?
FromSent OnAttachments
Donald BaudFeb 21, 2006 6:11 am 
Luigi RizzoFeb 21, 2006 6:35 am 
Donald BaudFeb 21, 2006 6:57 am 
Luigi RizzoFeb 21, 2006 7:41 am 
Donald BaudFeb 21, 2006 8:15 am 
Luigi RizzoFeb 21, 2006 8:25 am 
Donald BaudFeb 21, 2006 8:38 am 
Luigi RizzoFeb 21, 2006 9:41 am 
Subject:Patch to add burst to dummynet ?
From:Luigi Rizzo (riz@icir.org)
Date:Feb 21, 2006 8:25:19 am
List:org.freebsd.freebsd-ipfw

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 <riz@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