e, node failure, and routing changes. 4.2 SDN Controller Forwarding Forwarding engine table Network Figure 4.6 Example of SDN NIB. One critical piece of all SDN controller is the NIB. It is a graph of all network entities, including switches, ports, interfaces, and links. The northbound applications read and manipulate the network through NIB. Each entity in the NIB is a key value pair. Examples of these network entities can be hosts, nodes, ports, network, and SO on. NIB serves as a database to the applications. Thus, normal DB operations such as query, create, delete, access attributes, configuration, and pull are supported. Figure 4.6 shows an example of the NIB. Host, forwarding engine, and network are all nodes. Each node can contain multiple ports (shown as dashed line, and n means n ports). Each link has two ports. 4.2.1 Controller Deployment Choices One of the main requirements for a centralized SDN controller to be deployed in a production network is its scalability and high availability. We propose that the key requirements for SDN scalability is that the centralized SDN controller can maintain high performance and avail- ability with increasing network sizes, network events, and unexpected network failures. We focus our discussions on the controller scalability as follows. To improve the controller scalability, a common practice is to deploy multiple controllers either for load balancing purposes or for backup purposes. According to different purposes, we can employ different models to provide a more scalable design. In the following, we discuss three different models for scalability and high availability for centralized SDN controllers: hot-standby model, distributed network information base, and a hybrid model. The last model incorporates important aspects of the previous two models. We argue the third model is more appropriate for complex network scenarios with carrier-grade scalability requirements. 4 Software-Defined Networks Principles and Applications Hot-standby model: This is similar to the cu