Comparing Network Abstractions and Virtual Memory
Being able to work with an abstraction will remove a significant source of network errors, while increasing productivity of network managers.
I just posted a blog at NetCraftsmen.net: Network Abstractions and Virtual Memory. In it, I compare SDN's network abstractions with those of virtual memory. It is relatively easy to extrapolate the comparison with other virtual IT components, such as virtual storage or virtual machines. Both virtual storage and virtual machines have extracted the basic elements of storage and compute to virtual models. In the process, they have simplified how we deal with the basic elements and hidden the complexity of the physical implementations.
For example, in the storage world, we no longer have to determine how big a given storage volume should be and manually map that onto a disk drive. We no longer have to manually handle growing a file system when it reaches capacity. We simply tell the virtual storage system to shrink or expand a storage volume and it handles all the details, allowing us to work at a higher level of abstraction. The result is an increase in our productivity.
Why can't networking have a similar abstraction? Why do we need to work with the details of VLAN number allocation (analogous to disk block allocation)? If we need a L3 VPN, we should be able to specify it without having to spend hours building an MPLS domain to support it.
We need to define the proper network abstraction and then build the underlying control system to provide that virtual instance (see my blog on the Virtual Network Instance) while hiding the details of the implementation. Being able to work with the abstraction will also remove a significant source of network errors, so the benefits extend to more than productivity.
Please let me know if you have ideas about useful network abstractions.