I had the great pleasure of stumbling across the Wool trilogy of books last year. I haven’t been so touched by a book since The Passage – I must have a thing about the end of the world. The story is about a community that lives in a huge pill shaped structure (a silo) almost entirely buried in the ground, with just the top breaking the surface. Without spoiling the story for anyone, it quickly becomes clear that their little world, their lives, their way of life, absolutely everything is artificial or has a hidden purpose; a complex, fragile facade maintained through fear, indirection, lies, secrecy and manipulation. No one can leave as the environment outside is deadly, a rare truth but still a lie (you’ll have to read the books to understand why). Another classic Sci-Fi story, Ender’s Game, explores the reverse; with Ender believing his battles are simulations when in fact, they are real. His guilt leads him to become the Speaker for the Dead, cathartically providing truthful, honest insight into the former lives of the dead to improve the lives of the living that remain.
Networking is a lot like that; diversion, redirection, abstraction, proxies, ARP manipulation, tunnelling and encapsulation. I don’t really mind that, it’s simply something that seems to be necessary to meet the needs of the business or it’s users (and unfortunately, often it’s applications). I appreciate many don’t feel that way but really, I’d say NAT, VPNs and VLANs (as three common examples) have been pretty successful, or at least widely deployed. Let some smart programmer (or team of) do the hard work and thinking and create the algorithms, reap the benefits.
What I do mind is the obvious lack of real innovation, something genuinely new. Innovation seems to be cobbling existing protocols together and/or perverting their operation to reach a desired result. An OSI model approach to so-called new protocols is pervasive; lets only deal with one layer at a time, or the one we must. That, or let’s build it above them all so we don’t have to get down into the dirty details and deal with the real problem(s). Does anyone have the guts to create something unique or new? It seems not. Who can blame them? Its so much easier to stand on the shoulders of others.
There are a number of fairly rational arguments behind this;
- Existing protocols are robust and proven
- Historical in-traction
- The need to integrate (painlessly)
- Why re-invent the wheel?
- Distributed protocols are hard
- Nobody cares
- Self interest and preservation
Let’s take OpenStack (as is my want these days) as an example of an opportunity lost. OpenStack makes use of Linux Bridge, OVS, iptables, OpenFlow, VLANs, DNS, DHCP, Linux network namespaces, Libvirt and GRE tunnels. It’s quite a heady,messy, complex mix and full praise to those who built it, it works surprisingly well (and overall I really like OpenStack). Surely though, it could have been a great opportunity to do things differently, rather than make use of an Inceptionesque number of deeply nested virtual devices and constructs. I well appreciate the reasons why that didn’t happen, and I’m not knocking the project, this is just an example. Here’s a few random but related ideas that have popped into my head recently;
– Why use IP? Internally at least, surely an interface UUID would suffice, just translate between the guest IP and the UUID on the node hypervisor, and again if using the public (NAT) network (on a controller)
– Why use DHCP? Something simpler, related to an interface UUID could be faster/better, we have a central controller already
– Why use network namespaces? If you didn’t use DHCP (dnsmasque) or IP that’s two less reasons for them
– NAT or PAT based on interface UUID (once again)
– Use OpenFlow entirely internally, with an option to use it externally too
Yes, I know these are all crazy ideas (given little thought), but you get the point. Yes, I’m aware of SCTP and other protocols that are ‘better’ than UDP/TCP. No, IPv6 is not a valid answer. Yes, Ivan reminds me about The Twelve Network Truths on a regular basis on his blog.
I don’t care.
I want to leave the silo, I want to hear a Speaker for the Dead mourn the demise of the OSI model and much more. I’m tired of invention that simply rehashes the same old thing. I don’t want a robot that looks and sounds like me, I want something that’s new, something that adds to my life and enriches and improves it, rather than simply duplicating my form, with ‘more power’.
I wait in hope.