If you often download multiple items at the same time, then you have likely noticed that one download connection tends to dominate over the others until it is finished. Why is that? Today’s SuperUser Q&A post has the answer to a curious reader’s question.
Today’s Question & Answer session comes to us courtesy of SuperUser—a subdivision of Stack Exchange, a community-driven grouping of Q&A web sites.
Photo courtesy of Armando Sotoca (Flickr).
SuperUser reader Keltari wants to know why some download (network) connections dominate others:
I have my suspicions as to why, but I want someone with a stronger background in networking to explain.
Why is it that when downloading from multiple (different) locations, certain connections saturate the bandwidth, leaving other connections almost idle until the dominant connection is finished?
Why do some download (network) connections dominate others?
SuperUser contributor cybernard has the answer for us:
Generally, the fastest connection wins. However, before Windows 7, networking was a mess and performance was awful all around. Trying to get more than 20mb/s from Windows XP, for example? Good luck with that.
- The standard TCP congestion avoidance algorithm employs an additive increase and multiplicative decrease (AIMD) scheme. When there is no packet loss detected (by means of three duplicate-ACKs or retransmission timeout), the congestion window (cwnd) is increased by one Maximum Segment Size (MSS) every RTT. Otherwise, if a packet loss is detected, the TCP sender decreases cwnd by half. In a high-speed and long delay network, it requires a very large window, e.g. thousands of packets, to fully utilize the link capacity. Therefore, it will take the standard TCP many RTTs to recover the sending rate upon a single loss event. Moreover, it is well-known now that the average TCP congestion window is inversely proportional to the square root of the packet loss rate.
Source: A Compound TCP Approach for High-speed and Long Distance Networks [Microsoft]
A faster connection has more successful packets, therefore its cwnd/MSS is increased and it gets even more of the total connection.
Have something to add to the explanation? Sound off in the comments. Want to read more answers from other tech-savvy Stack Exchange users? Check out the full discussion thread here.