[gPXE] any negative implications of setting TCP window size to (65536 - 4) ?
Glenn Brown
glenn at myri.com
Fri Feb 19 12:45:25 EST 2010
> The lack of out-of-order reception [...] really needs to be addressed.
To put some numbers on the performance impact of out-of-order packets: a
1997 paper reported "Overall, 2.0% of all of [...] data packets and 0.6%
of the acks arrived out of order". That's from
http://cseweb.ucsd.edu/classes/wi01/cse222/papers/paxson-e2e-packets-sigcomm97.pdf
section 3. I used this paper only because it was the first source I
found via Google.
Those statistics are enough to estimate the effect of dropping instead
of reordering: in-order data packets will come in bursts of 50 packets
on average and have a ~round-trip-time delay, say 200ms, before the next
burst. With 1500 byte MTU on an 'infinite bandwidth' network, that
limits performance to ~3Mbit/s.
This thread was started because gPXE's limited window size was
throttling performance. For comparison, gPXE's 4K window and the same
assumed 200ms round trip time limits performance to ~4K/200ms or
0.163Mbit/s. So, it seems the window-size problem is a much more severe
performance limitation than is the lack of out-of-order support.
The window size must be addressed before out-of-order support will help.
That said, out-of-order is not hard to address. It simply requires a
sorted list of 'early' packets per connection, which is checked after
each in-order packet is processed. The only complexities that spring to
mind are "What's the right way to deal with buffer starvation?" and "Can
one avoid copies when buffering early receives?" I'd be happy to share
thoughts on these if anyone is planning to implement it. Unfortunately,
I don't have time to implement+debug+support it myself.
--Glenn
More information about the gPXE
mailing list