rrent high availability solution for off-the-shelf router and switches. In this model, a master controller is protected by a hot-standby model. The standby instance will take over the network control upon failure of the master con- troller. The advantage of this model is its simplicity. However, it may encounter performance bottleneck when the number of switches and the communication messages grow significantly. Distributed NIB: It employs a distributed system's concept, which is widely used in today's SDN solutions. In this model, the network controller is a cluster of controllers. Each of the controllers control a different part of the network. The network information is replicated across multiple controllers for high availability and scalability. This model is designed for large network with hundreds or even thousands of switches. The disadvantage is the communication overheads between controllers. With a careful design communication protocol, the drawbacks could be overcome. Some widely used SDN controller implementations, such as ONIX [80] or ONOS [81], belong to this model. Hybrid model: This is a combination of the previous two models where the network information is replicated for high availability. In particular, controllers are grouped into the clusters. In each cluster, there is a master controller plus a hot-standby instance to handle the failure scenarios. It is organized in a hierarchical manner SO that the scalability is guaranteed. This model is used in large-scale deployment, such as in AT&T's network. One important question is how to distribute these data across multi- ple controller instance in a distributed system. Multiple techniques can be used to scale the controller. First, we can partition the data across multiple instances. Each instance can control a subset of switches and forwarding rules. Second, we can employ a hierarchy design. We can use zoom in and zoom out across different aggregation levels. Third, we can choose different consistency models for different data types. For example,