{'fraction_non_alphanumeric': 0.01245048104131296, 'fraction_numerical': 0.0, 'mean_word_length': 5.476190476190476, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Capacitated Next Controller Placement in Software Defined Networks

Software defined networking shifts the control plane of forwarding devices to one or more external entities known as controllers. Determining the optimal location of controllers in the network and the assignment of switches to them is widely known as controller placement problem. In case of controller failures, the switches are disconnected from the controller until they are reassigned to other active controllers with enough spare capacity. However, there is a significant upsurge in the worst case latency after the reassignment due to lack of planning for controller failures. In this paper, we propose a controller placement strategy that not only considers reliability and capacity of controllers but also plans ahead for controller failures to avoid repeated administrative intervention, drastic increase in latency and disconnections. It is formulated as a mixed integer linear program. The objective is to minimize the maximum, for all switches, of the sum of the latency from the switch to the nearest controller with enough capacity (first reference controller) and the latency from the first reference controller to its closest controller with enough capacity (second reference controller). We also proposed a generalized model which can be used to minimize the average latency and extended it for multiple controller failures. Furthermore, we presented a simulated annealing heuristic that efficiently solves the problem on large scale networks. The proposed formulation and heuristic are evaluated on various networks from the Internet Topology Zoo. Simulation results show that our proposed method performs better than the controller placement that does not plan ahead for failures.