cURL / Mailing Lists / curl-library / Single Mail


Re: slow http transfer (winxp)

From: Daniel Stenberg <>
Date: Tue, 23 May 2006 23:32:45 +0200 (CEST)

On Fri, 19 May 2006, wrote:

(I'm cc'ing this reply to the libcurl list and I suggest we take follow-ups
there since this is about TCP details and libcurl internals.)

> Below is a trace of a curl http transfer between 2 PCs (WinXP) under the
> same sub-net mask (connected by a hub). No routers were involved. The Curl
> problem is this:
> - Curl processes data 0x4000 bytes at a time (16,384).


> Below is a trace showing this. Starting with packet 14984 (the first packet
> of the next 0x4000 bytes processed by Curl) we see good transfer until
> packet 15003, which is the ACK that triggered the 200 ms delay timer. This
> is a delta timestamp trace. Note that the 1500-byte packets are taking
> around 130 us, which is correct for a 100Mbps HDX circuit. The 200 ms extra
> every 12 packets is what is causing the throughput problem.
> - Conclusion- Curl is not using TCP correctly.

I find your logic disturbing: if you were 100% correct, then wouldn't everyone
face the same problems no matter what TCP stack? And I can tell you that they

Hence, the explanation to the sympthoms you see is _not_ as simple as you make
it sound like up there.

> I found out that applying following registry settings on server XP machine
> solved problem, however this is not solution that I can accept (just a
> workaround):

But tell me, are you only testing this on the same XP machine? Did you try the
exact same command line on other XP machines, or possibly machines running
other Microsoft operating systems/versions or even other operating systems?

If you can produce very similar traces on such other systems, then I would
really think you have a case. Right now, I don't know what to think more than
that XP sounds like a crappy operating system (or at least its TCP stack)
since this works just fine on so many other systems.

Then again, if this really is a problem on all XP machines that makes a
100mbit connection turn into a 1mbit crawl, then why haven't we seen this
reported before? We have MANY users, even on XP. Some of them doing commercial
apps with paying customers...

> Is there any command line setting that I can apply to curl, or any other
> seeting that can help to speed up http transfer to XP machine?

No. But I would love to find out what on earth libcurl _can_ do to make it
behave like this. Then we can/should fix it.

  Commercial curl and libcurl Technical Support:
Received on 2006-05-23