  Current SDN controllers have been designed based on a monolithic approach
that integrates all of services and applications into one single, huge program.
The monolithic design of SDN controllers restricts programmers who build
management applications to the specific programming interfaces and services
that a given SDN controller provides, making application development dependent
on the controller, and thereby restricting portability of management
applications across controllers. Furthermore, the monolithic approach means an
SDN controller must be recompiled whenever a change is made, and does not
provide an easy way to add new functionality or scale to handle large networks.
To overcome the weaknesses inherent in the monolithic approach, the next
generation of SDN controllers must use a distributed, microservice architecture
that disaggregates the control plane by dividing the monolithic controller into
a set of cooperative microservices. In this paper, we explain the steps that
are required to migrate from a monolithic to a microservice architecture and
propose two potential architectures to achieve the goal. Finally, the paper
reports the results of testbed measurements that we use to evaluate the
proposed disaggregated architecture from multiple perspectives, including
functionality and performance.
