Has this ever happened to you: You are watching a video on the Internet and all of a sudden the network just grinds to a complete stop?
After getting fed up of this sort of behavior, Jim Gettys decided to find out the cause. The result is rather surprising. The main cause of the sudden slowdowns isn't nefarious activities by the network providers or lack of equipment, it is actually too much equipment. In particular too much memory.
When I first started using computers in the late 1970s, the first machine I used had 32 thousand bytes. When I was working on the Web at CERN in the 1990s my machine had 32 million bytes. Today my desktop computer I am writing this on has 32 billion.
Computer memory is cheap. Internet packet loss is bad. Why not use all that cheap, cheap memory to avoid the need to throw packets away?
Imagine for the sake of argument that you operate a warehouse for a bread factory. Every night the bread factory sends you fresh bread and every morning your vans deliver the bread to the stores. There is however one
If the bread factory sends new loaves faster than they can be delivered then the warehouse is going to start filling up with bread. If the warehouse is small, this point where the bread has to be thrown away is reached fairly quickly. If the warehouse is larger, the shelves will start to fill up.
Unless the delivery problem is a temporary one, having a bigger warehouse does not avoid the need to throw bread away. It does make a difference to the freshness of the bread being delivered. Bread from the small warehouse with storage for a few days at most is still fresh. Bread from the huge warehouse is stale and rotten by the time it arrives at the store.
Eventually of course, the bread factory will need to either reduce the rate of production or increase the capacity of its delivery infrastructure.
Changing the congestion algorithm parameters is sufficient if the warehouse only serves one bakery. But the problem can come back if the warehouse serves multiple bakeries.
The simplest way for the warehouse to manage its affairs is to always deliver the oldest bread no matter which bakery made it. If the shelves start to get full, everyone's bread will spoil no matter what they do. Tweaking the congestion rules only works if everyone changes.
Even worse, this situation is an example of the prisoner's dilema. Everyone is better off if everyone makes the change. But if only some of bakeries do, the are actually a little worse off.
A better way for the warehouse to operate would be to keep track of the bread from each bakery separately and make sure each bakery gets a fair share of the available delivery resources.