The Hourglass Model
Today I learned about the Hourglass Model. The argument is counter-intuitive: adding more functionality to the thin "waist" abstraction layer can reduce the number of applications that layer is able to support.
For example, the functionality of NATed subnetworks limits the IP layer's ability to support peer-to-peer applications.There is a connection here between the breaking of symmetry and the weakness of NAT, a network that can no longer treat every host as a first-class peer. The more the waist assumes, the fewer the things that can be built on top of it.
I had been using the orthogonality principle unconsciously, without a proper name for it, until I read this paper. It also pointed me to the end-to-end argument, a design principle about where to place function in a system that has guided network design for decades.J. H. Saltzer, D. P. Reed, and D. D. Clark. "End-to-End Arguments in System Design." 1984.