New Set of High Performance Networking Patches Available

Darren Tucker dtucker at zip.com.au
Thu Aug 4 23:15:20 EST 2005


Chris Rapier wrote:
> http://www.psc.edu/networking/projects/hpn-ssh/

Looking at these has been on my to-do list for a while and I finally 
took a look.

> 1) HPN performance even without both sides of the connection being HPN 
> enabled. As long as the bulk data flow is in the direction of the HPN 
> side you should see improved performance. I've measure 200Mb/s to an HPN 
> server from a non HPN client and vice versa.

I've been testing with tunbridge[1] on OpenBSD to add latency.  I've 
seen an improvement of around 50% throughput on scp with 100ms of 
latency (each way, ie 200ms rtt) simulated link with Linux endpoints.

Using -w doesn't seem to make any difference (or sometimes it's a net 
loss) although it's quite possible something in my test environment is 
responsible for that.  (Yes, I did the stack tuning, both netstat and 
getsockopt show the buffers are 1MB or more.)

> 2) HPN client can now set the local tcp receive buffer on a per 
> connection basis. Using the -w option allows the client to override the 
> local tcp receive window settings up to the maximum tcp buffer size. 
> This is just a setsockopt() call really.

I think this should be a ssh_config(5) option (maybe "TCPReceiveBuffer" 
?) rather than a command-line switch (ssh already has enough switches...)

This would allow it to be set either per-connection or globally, and may 
be passed through from the scp command line with the "-o" option.

The latter would also mean that scp would need less modification (and 
scp's code is mostly shared with rcp, so that's also a plus).

Attached is a diff relative to openssh-4.1p1-hpn11.diff with a couple of 
proposed changes:
* move the sshconnect.c setsockopt code into its own function
* make that function style(9) compliant
* fix a bug where strerror was used on the non-error path
* make BUFFER_MAX_HPN_LEN an unsigned to placate gcc -Wsign-compare
* replace magic numbers in channels.h with symbolic names

I don't think I changed any functionality (but I could have missed 
something...)

[1] http://www.iijlab.net/~kjc/software/dist/tunbridge-0.1.tar.gz

-- 
Darren Tucker (dtucker at zip.com.au)
GPG key 8FF4FA69 / D9A3 86E9 7EEE AF4B B2D4  37C9 C982 80C7 8FF4 FA69
     Good judgement comes with experience. Unfortunately, the experience
usually comes from bad judgement.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: openssh-hpn.patch
Url: http://lists.mindrot.org/pipermail/openssh-unix-dev/attachments/20050804/f556df8c/attachment.ksh 


More information about the openssh-unix-dev mailing list