Thursday, March 31, 2011

Usage Based Billing caused by an Internet Bug called Bufferbloat

There has been a lot of talk about Net Neutrality (NN) and Usage Based Billing (UBB) recently. The issue appears to be that as more and more people transfer more and more data, the Internet is getting bogged down. BitTorrent was originally seen as the biggest culprit, although services like NetFlix are now the front-runners. The current thinking is that improving the situation is going to require large investments in the infrastructure.

The problem with that explanation has always been that the math doesn't work out. Although it is true that usage has been going up, the infrastructure has also been increasing at an exponential rate. Given the actual numbers, there is no reason for the Internet to have been slowing down. Yet it is absolutely undeniable that it has. For example, you probably have several times the bandwidth you had five years ago. Does the Internet feel faster to you? For most people, the answer is that it feels decidedly slower.

In the last couple of months, a network engineer working at Bell Labs named Jim Gettys has finally determined why things have been getting slower and slower. He found that there is a bug in the Internet that he has called Bufferbloat.

I'm going to explain Bufferbloat, but Don't Panic! This is a decidedly non-technical explanation. We are going to look at Bufferbloat by using a classic "I Love Lucy" episode.





Lucy and Ethel get a job wrapping candies at a factory. The candies come down a conveyor belt to them, Lucy picks one up and hands it to Ethel, and Ethel wraps it and puts it back onto the conveyor belt. The guy upstream from them making the candies gets the orders for candies in bursts, so sometimes there are no candies for Lucy and Ethel to wrap and sometimes there are lots of them, too many for them to handle at once.

Further along the conveyor belt is the supervisor. She is watching the candies come down the line. When she sees a lot of wrapped candies, she figures everyone is able to handle their job OK, and yells out "Speed it up a little!". If the candy guy has enough orders, he starts making the candies quicker and quicker until all the orders are filled. This rapid rate causes Ethel to miss wrapping some candies, but the supervisor sees this and yells out "Slow it down a little!".

OK so far? This is really the way the Internet is designed to work. In the candy factory the supervisor is supposed to see unwrapped candies so she knows to slow down the line. On the Internet, data is supposed to be lost so that the other end knows it should slow down sending data.

Lucy and Ethel don't want to look like they are doing a bad job, so when the candies come too quickly Lucy starts hiding them in her hat, and Ethel pulls the candies from the hat rather than directly from Lucy. The supervisor never sees any unwrapped candies, so she keeps yelling "Speed it up a little". If the hat fills up then unwrapped candies finally get past Lucy and Ethel and the supervisor slows down the line.

For a while their deception results in the line going too fast, but quite often they will catch up. The hat will be empty, Ethel will start taking candies directly from Lucy to wrap, and no one will be any the wiser. If the hat fills up, the supervisor quickly drops the speed so everything works out OK. Ethel is wrapping at full speed much more than if the supervisor were speeding up and slowing down the line all the time, so overall the hat trick is a good thing for the factory.

On the Internet, the equivalent of the hat is a bit of memory called a buffer. Devices on the Internet have buffers for sending and receiving data. As a general concept they are a good thing and keep the Internet flowing smoothly.

Now a salesperson comes around, and offers Lucy and Ethel a large bucket to replace the hat. Very cheap, only a penny. They worry that all the unwrapped candies they let slip by make them look like they are doing a bad job, so they buy one to replace the hat. Now when bursts of candies come down the line, they can keep up for a longer time before unwrapped candies get past them.

The salesperson comes around later and offers them a shelf of buckets, then a wall of shelves filled with buckets. Then he comes back and offers an entire warehouse filled with buckets, again all for only a penny. Each time they take the extra space to store candies. "Oh boy," says Lucy to Ethel. "We'll never let an unwrapped candy get past us again."

At first, she is right about that. The warehouse is so big it never fills up. But then bigger orders start to come in and the candy maker is given new equipment to make candies quicker. The warehouse starts to fill up occasionally, and as time goes on it happens more and more frequently.

There are two consequences to storing the candies in the warehouse before wrapping them. The first is that the supervisor never slows down the line unless the warehouse is completely filled with candies. By the time that happens, she has sped up the line so many times that it's speed has to be cranked down very quickly until it is running at a snails pace. Anyone watching the line could get whiplash from the speed change. And it only slows down enough to keep the warehouse filled, so the warehouse never empties unless there is a large lack of orders.

The second consequence is that the candies stored in a full warehouse are getting pretty old by the time Ethel gets around to wrapping them. If you think of the time they sit in the warehouse as if they were sitting on a moving conveyor belt the whole time, the belt would be hundreds of thousands of miles long. By the time they reach the supervisor in the shipping department, it could well be that no one wants these mold-covered candies anymore.

On the Internet, as memory has gotten cheaper and cheaper the buffers used in Internet equipment have gotten larger and larger. Our hats have been replaced by warehouses. This is Bufferbloat. At the same time, more orders for candy have started showing up in the form of data from applications like BitTorrent and NetFlix. We also have applications like VoIP that are sensitive to the time that data sits around before it is delivered, called latency.

Latency on the Internet is the amount of time it takes to send data from one place to another, and it is a very different thing from bandwidth. Consider the difference between sending a massive amount of cargo on a cargo ship (increased bandwidth) versus taking a package somewhere very quickly with a fighter jet (reduced latency). Our bandwidth has increased but our latency is getting worse, at least under some conditions.

Latency is usually considered analogous to distance, just as the candies sitting in the warehouse could be thought of as traveling on a very long conveyor belt.  The latency of the Internet when it is suffering from Bufferbloat can make the web servers you are connecting to look like they are several times further away than the moon.

While it will take a year or two to figure out the optimal solutions for Bufferbloat, it is known that there are many things that ISPs can do right now to improve the situation. And it won't cost them all that much money, either. Now that we finally understand the problem, can we convince Internet Service Providers (ISPs) to back down on the stands they have taken on UBB and NN? I certainly hope so, but most of them are pretty invested in their positions.

2 comments:

Anonymous said...

Your writing is good and gives food for thought. I hope that I'll have more time to go via your content. Regards. I wish that you just publish new texts and invite you to greet me.

Bruce Atherton said...

Thanks for the kind words. Positive feedback like this does indeed increase the likelihood of more posts coming at an increased rate.

I'll see if I can't get another post out in the next couple of days.