Go to the top of the NLANR/DAST web site

AAD | Advisor | Autobuf v2.0 | Multicast Beacon | BIMA | Iperf | NextINet | Tools | Web100 | All Projects


Search this site with Google

About:
- DAST
- NLANR
- FAQ
- Staff
- Contact DAST

End User Tools and Projects
- NextINet
- Advanced Applications
Database

- DAST Projects/Tools
- Network Performance
and Measurement Tools

End User Support
- Getting Started Guide
- Networking Glossary
- Other Projects/Organizations
- Funding Opportunities

Documents
- Guides/Tutorials
- Papers/Articles
- Presentations
- Reference Books

WebCT Courses
- Tuning Applications

Events
- NLANR/DAST Training
- NLANR Packets Calendar
- Idesk Travel Schedule

News
- Press Releases
- Alliance Data Link
- I2 Newswire Archives

Reports & Statistics
- Monthly Updates and QSRs
- Abilene "Weather Map"
- Web Server Stats

Enhancing FTP Performance

FTP Survey: TCP window sizes

FTP is the single most common TCP bulk data transfer application in use today, yet its performance is notoriously poor. We are investigating how to improve the performance, both with current implementations and by proposing new RFC's to fix deficiencies in the FTP protocol.

Tuning the TCP window size properly can improve performance often by a factor of two or more. For information on how to compute TCP window sizes for host combinations, see the datalink article, "Are You on the Internet Fast Lane?". Doing this tuning is most valuable for projects which ftp files between two particular hosts on an ongoing basis, versus the one-off ftp sessions to retrieve a couple files.

Due to the lack of any standard or RFC for setting TCP window sizes (set via the TCP buffer sizes) in FTP programs, I have conducted a survey of implementations that provide such functionality. Most of these use different commands, both for the client and the server, so they are not interoperable. The "help" and "site help" commands are useful in determining what options the client and server, respectively, support.

For more direct support in tuning FTP transfers, please contact NLANR applications support at dast@nlanr.net.

Unitree MSS

 
Server command: quote wind [#]
Notes: The msscmd command does this tuning automatically.
Typing quote wind by itself reports current setting.
This may be specific to NCSA (mss.ncsa.uiuc.edu)?

SGI IRIX

 
Client command: win [# [k]]
Server command: site win [# [k]]
Notes: Normal SGI ftp client (/usr/bsd/ftp) and server.
Option not mentioned in man pages.
Does not accept window sizes under 1K.
Typing win by itself sets size to 2M.
Accepts k suffix for kilobytes; does not accept capital K.
Can only be called while connected.

Cray UNICOS

 
Client command: -s [#[kK]]
sockbuf [off | auto | #[kK]]
Server command: site sockbuf [off | auto | #[kK]]
Client command: winshift [on | off | 0-14]
Server command: site winshift [on | off | 0-14]
Notes: Normal Cray client (/usr/ucb/ftp) and server. Supports Kerberos 4 authentication.
For the buffer size, 'auto' does some form of automatic buffer tuning. (Unclear how the ftp chooses buffers automatically though.) 'Auto' is the default.
If value is 'on' for winshift, 4 is used. 'On' is the default.
Cray UNICOS has this annoying property of not automatically computing the TCP window shift; the user has to properly compute it using ceiling( log2( socket_buffer_size ) ) - 16.
On Cray UNICOS ftpd, -s # sets the TCP window shift. By default this is 'on' (4), and can be changed with the 'site winshift' option.

NCSA Kerberos 5

 

Globus 1.1 GSI

 
Client command: lbufsize [#]
rbufsize [#]
Server command: site rbufsz [#]
Notes: NCSA Unix distribution only. Bufsize options are not in the MIT distribution, so it must have been added at a later point. Von was unaware of it; Mark added the documentation to the man page.
lbufsize sets local buffers and can be called anytime. rbufsize sets remote buffers and can be called only while connected.
This is the same codebase as is used in the upcoming Globus 1.1 GSI.

ncftp

 
Client command: set so-bufsize [#]
Server command: none
Notes: Version 3.0 beta 18. Does not currently communicate the client's window size to the server, but relies on the server's window size being set already.

ncftp / wuftpd

 
Client command: bufsize [#]
Server command: site bufsize [#]
Notes: Patches to normal distributions by Von Welch.
Used for the PSC-NCSA data migration.

Tests

Even though they are not automatically interoperable, one can issue both the local command (e.g. lbufsize #) and the remote server command (e.g. site win #).

NCSA (Illinois) to NCAR (Colorado) tests were done sending a 30 MB file in binary mode from an SGI Origin2000 at NCSA to a Cray J90 at NCAR over the vBNS network. The bottleneck bandwidth is 100 Mbit/sec fast ethernet (congested). Files were transfered from scratch or tmp directories on local filesystems.

TCP window size Transfer time (seconds) bandwidth (Mbit/sec) Speedup over default
NCSA to NCAR, ftp put
32 KB 41 6.1 1.0
default 41 6.1 1.0
64 KB 24 10.4 1.7
96 KB 21 11.2 1.8
128 KB 19 12.8 2.1
NCAR to NCSA, ftp get
32 KB 39 6.4 0.97
default 37 6.6 1.0
64 KB 29 8.8 1.3
96 KB 20 12.8 1.9
128 KB 21 11.2 1.7

NCSA (Illinois) to NCSC (North Carolina) tests were done sending a 40 MB file in binary mode from an SGI Origin2000 at NCSA to an SGI Onyx at NCSC over the vBNS network. The bottleneck bandwidth is 45 Mbit/sec DS-3. Files were transfered from scratch or tmp directories on local filesystems.

TCP window size Transfer time (seconds) bandwidth (Mbit/sec) Speedup over default
NCSA to NCSC, ftp put
32 KB 77 4.1 0.71
default 56 5.8 1.0
64 KB 50 6.3 1.1
96 KB 53 6.0 1.0
128 KB 47 6.8 1.2

Contact DASTBlank Space Last reviewed: December 31, 1969
NLANR || Applications Support || Engineering Support || Measurement and Network Analysis