Friday, April 27, 2007

Net Neutrality

Click the title for an entertaining primer on Net Neutrality in the U.S.

Large broadband providers have some cute little arguments about why they oppose net neutrality; they say that by prioritizing packets, they can offer a needed service to those who are willing to pay for it. But the real issue is not prioritizing traffic; it's degrading traffic--slowing down whoever doesn't pay extra, by letting "priority packets" suck up most of the bandwidth.

Now I don't understand the economics of the network neutrality debate in detail. But when I see that huge incumbent telecom corporations are opposed to neutrality while those in favor are web site operators, medium-size businesses, and grassroots activists, that's almost enough for me to make a ruling by itself.

And then there's the fact, as Harold Feld explains in the above article, that we actually had Net Neutrality during the whole time period in which the internet was growing to be the wonder we enjoy today, and we are only losing it now. Yes, you could always buy a bigger or smaller internet connection at your own "edge" of the internet, but traffic was treated equally in the "middle" of the internet, as it moved between endpoints.

So I'm generally in favor of Net Neutrality, but I wonder if there isn't some merit in packet prioritization to improve "low-latency" services. If you use the internet for voice calls, you'll notice that one of its longstanding problems is lag and dropped packets. Sometimes, seemingly at random, bits of voice will be cut out of voice calls, and other times, it will take a long time for sound to go from one person to the other. Similar problems can arise when playing online video games, in which there is a delay (commonly called lag) between when a person acts and when other players see that action. While often part of the problem is imperfect software, another part of the problem is the route your voice takes through the internet. If your voice travels through a region of the net that is heavily loaded, packets may get through after a delay, or be dropped completely. For that reason, players of many online games prefer to play on servers in their own city or region. Gamers call the delay "lag", but the technical term is "latency" (the lower, the better.)

What's interesting about voice and online games is that they probably take up very little of total online traffic--I would guess less than 10%. That's because the bulk of traffic involves downloading. When you're downloading something, such as a video, it's no big deal if each individual packet takes 3 seconds to go from a web site to your home computer--what matters is that you get as many packets as possible. You want them to come "as quickly as possible", not "as soon as possible". But when you're in a voice call, it doesn't matter if you have a slow ISDN line or the latest mega-speed cable modem. The higher speed line could improve the audio quality a little, but it can do nothing to make data arrive sooner because your voice must compete with downloads and such to get through.

If we don't have net neutrality, there is clearly a risk that large corporations will find a way to make most people pay more, by improving the service to some at the expense of others. But what if we came to a compromise on net neutrality, in which at least 90% of all traffic in any given pipe must be treated neutrally (no discrimination against specific traffic allowed), while up to 10% of traffic is allowed to move more quickly?

In this way, some users and service providers would be allowed to buy a piece of that 10% in order to transfer low-latency data more quickly. That way, "premium" voice packets can be moved to the head of the queue and protected from loss in a busy pipe. With a limit of 10%, there is not enough non-neutral traffic to really slow down the neutral traffic. What do you think?


Harold Feld said...

This is Harold Feld. I'm sorry but I'm having problems logging in.

There have traditionally been two approaches. One is to allow prioritization for the reasons you suggest, provided it's done on a non-discriminatory basis.

The other is to say that prioritization creates more problems than it is worth. Edge-based solutions arise in the abscence of core-based solutions like prioirtization. Further, is it worth changing the nature of the entire network to permit a handful of applications that work better with prioritization. If this is about VOIP, maybe VOIP isn't worth doing. After all, we have a voice network alreaady. Why make the TCP/IP network more like the voice network? Doesn't make as much sense to ask whether those who want VOIP applications need to deal with the limitations of the TCP/IP end-to-end network?

Qwertie said...

No, that doesn't make sense to me. Internet traffic is much cheaper, that's why people use it in the first place. It uses pipes efficiently and monopolists have not driven up prices; obviously there are good reasons to favor the internet over the PSTN.

And there are other low-latency applications besides VOIP: online games, Second Life, even simple instant messages. HTTP requests also benefit from low latency, but there is a limit to the number of packets that can get priority.

I'm just saying, while I support Net Neutrality, I wonder if a strictly limited degree of non-neutral traffic should be allowed. Of course, if the internet's pipes are really huge then congestion that disrupts low-latency applications could be avoided. But prioritization of, at most, 1 in every 10 packets might be a more efficient way to relieve this need, strictly speaking. On the other hand, a lot of overhead might be involved for a router to decide whether a packet that requests priority should actually be granted it.

So maybe, just maybe, a well-designed exception in net neutrality legislation might be in order.

Qwertie said...

Footnote about HTTP requests: the upstream request (from your PC to the server), as opposed to the downstream response, is a good candidate for prioritization: it is a small packet whose latency, not throughput, is important. Same for SYN/SYN-ACK packets. These little packets could perhaps be prioritized without hurting overall internet performance. By giving these priority, the time it takes to display a web page could be slightly or significantly reduced.

A further thought: if all SYN packets were prioritized, then the router could be called neutral since it's nondiscriminatory. But in the general case (VOIP, etc), the source/destination would have to be a factor in the decision to prioritize; if priority was free to all, I think it would lead to a tragedy-of-the-commons effect.