rly, we illustrate two scenarios, deploying con- troller on node 1 and node 7. We construct the two shortest path trees rooted from the controller. Interestingly, we found that node 7 is a much better location for controller compared to node 1. This is very counterintuitive, as node 1 as the core nodes in the Fat-tree structure were expected to be more resilient. When node 1 is the controller, 10 nodes are unprotected, including all the leaf nodes. With node 7 as the controller, only three nodes are unprotected. For example, node 11 is protected by node 9 when its parent in the primary path (node 10) fails. From these two examples, we observe that first, the controller's loca- tion does have large impact on the number of protected nodes in the network and second, the selection of controller's location can be quite counterintuitive. These observations motivate us to investigate a sys- tematic approach of controller placement to maximize the protection in the split architecture network. Deploying multiple controllers Next, we consider the problem of deploying multiple controllers in the network. The problem can be formulated as following. Given a network graph, with node representing network's switches and edge representing network's links (which are assumed to be bidirectional), the objective is to pick a subset of the nodes, among all candidate nodes and colocate controllers with switches in these nodes SO that the total failure likelihood is minimized. Once these nodes are selected, a solution to assign switches to controllers is also needed to achieve maximum resilience. The problem can be solved as a graph partitioning or clustering problem. The details are described in [89]. Two algorithms are proposed for SDN with multiple controllers. It is shown that the choices of controller locations do have significant impact on the entire SDN reliability. In SDN, the best resilient scenario is that each switch has a precon- figured backup path to the controller. The backup path can be used to reconnect to the controlle