> Some download managers such as NetAnts claim to be designed to maximize
> throughput by making multiple HTTP connections, each of which downloads
> a separate part of a single big file.
> 
> I wonder why doing this is helpful.
By violating the slow start principle. With one TCP connection
you send one packet, get an ACK, send two packets, get two ACKs
etc. With short lived connections, such as HTTP/1.0, you may never
actually get out of slow start and thus use significantly less
then bandwidth than is actually available.
  HTTP/1.1 addresses this at the application level by by reusing
the same TCP connection. With a longer lived connection you have
the chance to ramp up further and get out of slow start.
  The multiple connections brigade reduces the slow start effect
by using multiple connections. With four connections rather than
one you send four packets, get four ACKs, send eight packets,
get eight ACKs etc. Sounds good? Well, kind of, yeah...
> Now suppose the network is the performance bottleneck (maybe network
> congestion), then no matter how many simultanous connections are used,
> the overall transfer speed is limited by the network. How can the
> multiple connections help?
That's where things go wrong. If you are using four connections to
do the work of one then under congestion you will get four times
your fair share of bandwidth. This is good for you. It's bad for
everyone else who happens to be using the same link. Unless they
happen to be using one of these multiple connection atrocities as
well in which case you are heading for an arms race with people
increasing the number of connections they use to try and grab more
of the bandwidth for themselves.
  Once you are in to an arms race things go from bad to worse. Use of
multiple connections like that creates bursts of SYN, SYN-ACK and
data packets that disturb TCPs attempts to adapt to the available
bandwidth. This tends to result in active connections staying
backed off so there is always free capacity to absorb these bursts.
i.e. the link owner doesn't get to make efficient use of the
bandwidth they are paying for.
> However, by real experience, this kind of download manager is helpful
> and reduce the overall respond time. Why? Is it related to the HTTP 1.1?
Yes. It *appears* helpful to the end user. But it's snake oil. It helps
the end user by screwing over every one else trying to use any of the
links between you and the remote system you are accessing.
  I seem to remember early versions of Netscape used multiple
connections. I believe you'll find it mentioned in the tcpsat archives
if you search for netscape and marco.
  Incidentally there is ongoing TCP research to avoid slow start
limitations without being so massively anti-social. Things like
large initial windows, shared state, congestion managers etc.
                                Mike
-- Chief Network Architect Mobile: +44 7780 608 368 Kokua Communications Ltd Office: +44 20 7292 1680 52-53 Conduit Street Fax: +44 20 7292 1681 London W1S 2YX
This archive was generated by hypermail 2b29 : Thu May 31 2001 - 18:36:13 EDT