Say you run a server in a datacenter. You pay (for example) Level 3 for connectivity. What you're actually paying Level 3 for is the service of delivering packets to your end-users. If they don't do that, you'll buy your connectivity from someone else. There are plenty of players in the "connectivity to datacenters" market. Well, they're dominated by a dozen or so, and it's a bit of an old boys' club, but at least you have options.

Now, say you're Level 3. You want people to pay you to deliver packets to end-users. In order to convince them to do that, you need to be able to deliver packets to end-users. In order to do that, you need to have a traffic exchange agreement with (say) Comcast, who has the end-users.

That agreement will have some terms. Those terms might be that Level 3 pays Comcast (certainly not), they might be that Comcast pays Level 3 (probably not), or they might be that they exchange traffic for free (most likely). The terms you end up with are determined by the negotiation, which means that it's dependent on who has the most to lose by not exchanging the bits at all. Right now, with those two, either would basically collapse under its own weight without connectivity to the other, so it's probably peering (free traffic exchange).

Now, say you're Comcast. Your end-users are driving a huge relative amount of traffic from (say) Netflix. It's pretty expensive for you to maintain that, and it's eating into your profit margins quite a bit, because it's coming through Level 3 (hence free). You can't convince Level 3 to pay you for it, because if you stopped exchanging traffic, your users wouldn't be able to get to Google, Facebook, Wikipedia, the VPN to the office, and other low-bit, high-value endpoints, and then they would stop paying you. So, how do you make those costs scale?

The simplest solution is just to raise your prices. This would work very well for end-users who want to use Netflix, but your highest margins come from the end-users who basically only use e-mail, a little Facebook, and occasionally look something up on Wikipedia. That is, you get the best margins from people who use the least. They are also the most likely to jump ship (maybe skipping connectivity entirely) when faced with a price increase.

You could adopt metered pricing, where you pay depending on how much you actually use. It's similar to the model back in Ye Olden Days, where you paid per hour of usage, except updated for an always-on world. I think this is where it is ultimately headed, but it is extremely unpalatable to current markets. People like the certainty of a regular monthly bill with a fixed number on it.

Because those options carry severe disadvantages, ISPs are trying to get creative. Fortunately for them, last-mile eyeball ISPs generally don't have the competition that the big networks have. The end user has three choices, if they're lucky: the phone company, the cable company, and Clear. Many only have two, most only have one, and all of them are facing the same choices.

What this means is that they can threaten to cut off (or de-prioritize into the ground) access to Netflix specifically. This is actually a credible threat, because Comcast would keep on going just fine without tying in with Netflix. Their most profitable users don't even use it, and the others would probably lose Netflix anyway if they jumped ship!

This gives them two more options. They can threaten end-users, and ask people who want to use Netflix to pay more. The end-users don't like this, but the most profitable ones weren't using it anyway. This is the last way of drawing on the existing revenue stream.

The other option is to threaten Netflix. This is what they prefer, basically because it's the only way that does not involve upsetting your existing customers. It's also a fairly sensible model: essentially, Netflix is paying (some of the cost of) both ends of the connection and passing the cost on, where previously end-users were paying for their end. This model is sort of like broadcast television: the end-user doesn't actually pay for it; the broadcaster pays for both ends.

The problem is not with the fundamentals of the model, but with the logistics and the precedent. If Netflix is paying at both ends, why not Google? Or Hacker News? Or your blog? What about your VPN to your office? What about when you ssh (or scp a large file) to your computer sitting at home? Who pays if you connect directly to your friend to play a game?

On the logistical side of things, the problem is basically that there are a lot of ISPs. You must verify your bills for all of them, because it would be really easy to commit fraud this way. Netflix might be able to process monthly bills from all of them, but can Bob's video site? Can your blog? You might outsource this processing, but that just pushes the problem up a level, since Level 3 now needs to process (and confirm numbers for) bills for their customers cross all the ISPs in the world.

If you'll forgive me this, the cost of processing bills goes from O(n+m) to O(n*m), where n=number of ISPs and m=number of server-owners. Ask any complexity theorist: that's bad, and in the long run, it will only get worse.