  The conventional approach to scaling Software Defined Networking (SDN)
controllers today is to partition switches based on network topology, with each
partition being controlled by a single physical controller, running all SDN
applications. However, topological partitioning is limited by the fact that (i)
performance of latency-sensitive (e.g., monitoring) SDN applications associated
with a given partition may be impacted by co-located compute-intensive (e.g.,
route computation) applications; (ii) simultaneously achieving low convergence
time and response times might be challenging; and (iii) communication between
instances of an application across partitions may increase latencies. To tackle
these issues, in this paper, we explore functional slicing, a complementary
approach to scaling, where multiple SDN applications belonging to the same
topological partition may be placed in physically distinct servers. We present
Hydra, a framework for distributed SDN controllers based on functional slicing.
Hydra chooses partitions based on convergence time as the primary metric, but
places application instances across partitions in a manner that keeps response
times low while considering communication between applications of a partition,
and instances of an application across partitions. Evaluations using the
Floodlight controller show the importance and effectiveness of Hydra in
simultaneously keeping convergence times on failures small, while sustaining
higher throughput per partition and ensuring responsiveness to
latency-sensitive applications.
