1

I have users that previously used FTP for file transfers across high latency paths to their local server. They have switched to HTTP for these transfers (not by choice) and file transfer perforamance is seriously degraded. The TCP Window Size for the users' servers was optimized for FTP and the network latency.

Depending the implementation of HTTP at the source server (i.e., web service), is it possible that HTTP uses or effects a small/default TCP window size?

2
  • Could you tell us which OS and which HTTP server is being used? And their versions? It would be interesting to see which config is being used to verify if the adaptable TCP window size of many network stacks of modern OS is used or if a fixed value is being used and ill suited. You might consider using a TCP packets tracer (e.g. Wireshark) to see which and how the TCP window size is negotiated.
    – Huygens
    Aug 9, 2015 at 9:45
  • If you do update your question please let me know (e.g. Push a comment with my name)
    – Huygens
    Aug 9, 2015 at 9:47

1 Answer 1

0

No, HTTP and FTP both transfer files via basically pure TCP. The same TCP tuning that worked for FTP should work for HTTP.

The performance problem you're seeing is probably with the HTTP client or server implementations involved; they're probably not using TCP efficiently. For example, good implementations are careful to use rolling buffers to always keep the TCP pipe full. Naive implementations only hand one buffer at a time to TCP, and wait for that one to be fully sent before handing off a new one. That causes the pipe to keep partially draining between buffers, which is one of the worst things you can do for high-latency links. If you had an FTP client or server that made this same mistake, its performance would be just as bad as an HTTP client or server that made this mistake.

Note that this is just one example of how a naive implementation might not be using TCP efficiently; I'm not necessarily saying this is what's going on in your case, but it's a definite possibility.

2
  • Spiff, Thanks. I've been researching this for hours with no luck.
    – Chuck N.
    Feb 9, 2015 at 18:52
  • I disagree on one aspect: in the past the TCP stacks of most OS could not dynamically adapt the TCP window size. Therefore many old times app were setting the TCP window size manually and fixed (a socket option). Thus it is entirely possible that the HTTP server being used here is illed configured or programmed for low latency links, even though it could run on a more modern and adaptable stack. Without knowing the OS and HTTP server running it is difficult to be as conclusive as you are.
    – Huygens
    Aug 9, 2015 at 9:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .