February 9, 2006

Net Neutrality?

I'm kinda foxed by the some of the discussion going on about "Net Neutrality".

The internet was designed from the outset not to be content neutral.

Even before there was an IP protocol there were precedence flags in the NCP packet headers.

And the IP (the Internet Protocol) has always had 8 bits that are there for the sole purpose of marking the precedence and type-of-service of each packet.

It has been well known since the 1970's that certain classes of traffic - particularly voice (and yes, there was voice on the internet even during the 1970's) - need special handling.

Voice-over-IP (VOIP) requires that networks not be neutral; if tiny VOIP packets have to fight against large HTTP packets for bandwidth and space in router/switch queues then conversational VOIP quality will be very poor and we may as well concede the voice game to the incumbent telcos.

Maybe the heat comes from the question of who gets to mark traffic as having precedence - the user or some provider?

But how can we trust users not to mark all their traffic as being of overriding high priority?  But we begin to have the scent of provider-based priority marking if we don't trust the users and begin policing and admission control at the edges where the user's packets enter the internet.

Provider discrimination has already existed for a long time, often for purposes of self-protection or to induce better sharing of network resources. For example providers often disfavor and rate limit ICMP echo requests and replies.  And router vendors offer things like "fair queuing" (a means to more equally distribute resources among flows) and "Random Early Drop" (RED) (a mechanism that actually throws away perfectly good packets in order to penalize over-aggressive flows and coerce them to perform socially acceptable TCP congestive back off.)

The RSVP and Integrated Services approach to end-to-end quality-of-service faded away in the face of provider resistance and the kind of  inter-provider jealousy that is natural when providers compete with one another.  And I haven't seen much reason to believe that end-to-end Diff-Serve packet markings actually survive end-to-end.

(Just before we were acquired by Cisco, I implemented a full functioned IP multicast based RSVP client.  Woof! That was one seriously complicated protocol!)

What I'm getting at here is this: The internet was born with an element of discriminatory  treatment of traffic, and there are good technical reasons why such discrimination is valuable, particularly for VOIP.  So it would be plain wrong to say that the internet must be perfectly fair to all traffic.  What we need is a line, a fuzzy line, that tells us when such discrimination moves out of the category of being useful and into the category of predatory.

My own sense is that this fuzzy line needs to be based on the idea that it is OK if done with the actual or implicit consent of the user (or users) and servers to improve whatever it is that they are using the internet for.  But if it is done by providers for reasons divorced from self-protection (such as ICMP rate limiting) or to squeeze more dollars out of users or coerce their choice of providers, then the traffic discrimination is wrong.

Our guide in this should be the end-to-end principle and my own First Law of the Internet.

Posted by karl at February 9, 2006 1:50 AM