DragonFly kernel List (threaded) for 2003-07
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.