DragonFly kernel List (threaded) for 2003-07
Re: Dynamic Right-Sizing
This is a bit of a thorny problem. It might be best to break it into two
pieces... first get the window advertisement working properly, then deal
with physical buffer space reserveration in the kernel.
What I did for inflight was to add yet another windowing variable
called snd_bwnd in order to keep the code as clean as possible and
to not accidently break existing window calculations. I would recommend
taking the same approach for Dynamic Right-Sizing. If you keep it
clean and add sysctls to enable/disable it (defaulting to disabled for
now), similar to what I did with inflight, I would love to see it
:I'm trying to implement Dynamic Right-Sizing, which basically adjusts the
:advertised window in tcp to the bandwidth-delay product.
:(http://www.lanl.gov/radiant/pubs/drs/lacsi2001.ps for more info)
:The bandwidth-delay product is already calculated via the
:tcp_xmit_bandwidth_limit function (netinet/tcp_subr.c).
:It's basically the opposite of inflight (man tuning). Instead of modifying
:the amount of data that tcp sends out, it modifies the advertised window.
:Anyway, I'm trying to find out how to modify the advertised window on
:outgoing packets without messing anything up. I was thinking about
:simply adjusting the win value in netinet/tcp_output.c but I'm not sure
:where I could do that without messing up the window calculations already
:in place. There is a linux implementation of DRS
:which does it by increasing the size of the receive buffer space, but this
:doesn't seem feasable in BSD.
:As the paper says, this will dramatically increase the throughput of high
:bandwidth-delay product connections.
:Thanks, and I'd appreciate any help.