The controller placement problem (CPP) is one of the key challenges of software defined networks (SDNs) to increase performance. Given the locations of n switches, CPP consists of choosing the controller locations that minimize the latency between switches and SDN controllers. In its current form, however, CPP assumes a fixed traffic and no existing solutions adapt the placement to the load. In this paper, we have addressed the dynamic CPP that consists of: 1) determining the locations of controller modules to bound communication latencies and 2) determining the number of controllers per module to support the dynamic load.
We propose an algorithm named LiDy+ that runs in O(n2) and combines a controller module placement algorithm with a dynamic flow management algorithm. We evaluate the number of controllers, the controller utilization, and the power consumption and the maintenance cost of LiDy+ on both sparse and dense networks. Our comparison against a previous solution shows that LiDy+ does not only achieve a smaller number of controllers and a higher controller utilization but also incurs less energy and maintenance costs than the previous solution. Finally, we run LiDy+ in a large-scale environment where the previous solution of time complexity Ω(n2log(n)) is impractical.