  Current SDN controllers aggregate all control plane subsystems into a
monolithic program. A controller that follows the aggregated approach defines
its own set of programming interfaces and services, making application
development dependent on a particular SDN controller and restricting
portability of management applications across controllers. We propose a new
architecture that disaggregates controller functionality and externalizes
packet processing, a critical first step towards migrating from a centralized,
monolithic design to a decentralized microservice control plane architecture in
which SDN controller functions are divided into a smaller, interconnected set.
We argue that dividing a monolithic controller into smaller pieces has
advantages.
