Controlling SO_RCVBUF

Robinson, Herbie
2019-12-12T00:00:40Z

I have a customer who is complaining about slow SFTP transfers over a long haul
connection.  The current transfer rate is limited by the TCP window size and the
RTT.  I looked at HPN-SSH, but that won't work because we don't control
what software the peer is using.  I was thinking about coding a much more modest
enhancement that just does SO_RCVBUF for specific subsystems.  In the interest
of adding something that the OpenSSH community would take back into the source
base, what do people think is a better fit in the configuration file?

A single keyword for specifying connection options:

SubsystemOptions <subsystem-name> [command-line-option...]

The subsystem name would be scp, sftp-server, etc.  The command line options
would be -r <n> or --rcvbuf <n> to allow one to specify the number
passed to SO_RCVBUF.  This would allow one to easily add other options (like
SO_SNDBUF support).

An alternative would be to add the following option:

SubsystemRcvbuf <subsystem-name> <n>

This would be much easier to implement, but doesn't allow for more options
to be added without another keyword. I guess this is the way I'm leaning,
but I can be swayed.