I've written before about the end-to-end principle. Today a colleague sent me a link about Van Jacobson's network channels. I noticed this quote: "The key to better networking scalability, says Van, is to get rid of locking and shared data as much as possible, and to make sure that as much processing work as possible is done on the CPU where the application is running. It is, he says, simply the end-to-end principle in action yet again." Yet again?
This got me to thinking of all the places this principle shows up. Examples:
- The Network Neutrality issue where it is argued that innovation occurs at the ends of the network, and thus the center or core should be agnostic to all traffic types.
- The so-called "long tail" effect, where an end-to-end principle allows small consumers to find small suppliers and transact business that would otherwise not be possible.
- Politics, where Tip O'Neal famously said "all politics is local": it occurs at the ends of the channels connecting politicians and their constituents.
I guess the fact that it is called a "principle" should be a clue, but it is startling how many places you find it if you go a-lookin'.
Yet, if it is truly a "force of nature", then why do so many in the telecom business work so hard bucking this force by trying to build networks that provide complicated services, like IMS? Insurgent services (like, say, Google Talk) are ignoring the "intelligent core" and instead creating edge services depending on a mostly dumb network.
Take a simple service like, say, encryption: the end-to-end principle would predict that the best place to encrypt transmitted data is at the ends of the channel. (My understanding of data security principles would cause me to reach the same conclusion.) Would the market accept a network-provided encryption service?
The end-to-end mindset leads to wildly different system architectures than does an "intelligence in the core" mindset, hence many of the battles we see today.