I. Introduction
At least a decade ago [1] it was recognized that new network abstraction layers for network control functions needed to be developed to both simplify and automate network management. Software Defined Networking (SDN) [2]–[4] is the design principle that emerged to structure the development of those new abstraction layers. Fundamentally, SDN is defined by three architectural principles [5], [6]: the separation of control plane functions and data plane functions, the logical centralization of control, and programmability of network functions. The first two architectural principles are related in that they combine to allow for network control functions to have a wider perspective on the network. The idea is that networks can be made easier to manage (i.e., control and monitor) with a move away from significantly distributed control. A tradeoff is then considered that balances ease of management arising from control centralization and scalability issues that naturally arise from that centralization.