In order to simplify the management of the traditional network, software-defined networking (SDN) has been proposed as a promising paradigm shift that decouples the control plane and data plane, providing programmability to configure the network. With the deployment and the applications of SDN, researchers have found that the controller placement directly affects network performance in SDN. In this paper, the state of the art of the controller placement problem is surveyed from the perspective of optimization objective. First, we introduce the overview of SDN and controller placement problem. Then, we classify this paper of controller placement problem into four aspects (latency, reliability, and cost and multi-objective) depending on their objective and analyze specific algorithms in different application scenarios. Finally, we identify some relevant open issues and research challenge to deal with in the future and conclude the controller placement problem.
Software-Defined Networking (SDN) is a network architecture approach that enables the network to be intelligently and centrally controlled, or ‘programmed,’ using software applications. This helps operators manage the entire network consistently and holistically, regardless of the underlying network technology.
SDN broadly consists of three layers:
Application layer
Control layer
Infrastructure layer
The infrastructure layer is composed of various networking equipment that forms an underlying network to forward network traffic. It could be a set of network switches and routers in the data center. This layer would be the physical one over which network virtualization would be laid down through the control layer (where SDN controllers would sit and manage the underlying physical network).
The Control layer is the land of control plane where intelligent logic in SDN controllers would reside to control network infrastructure. This is the area where every network vendor is working to come up with their own products for the SDN controller and framework. Here in this layer, a lot of business logic is being written in the controller to fetch and maintain different types of network information, state details, topology details, statistics details, and more.
Since the SDN controller is for managing networks, so it must have control logic for real-world network use-cases like switching, routing, L2 VPN, L3 VPN, firewall security rules, DNS, DHCP, and clustering. Several networking vendors and even open source communities are working on the implementation of these use-cases in their SDN controllers. Once they get implemented, these services expose their APIs (typically REST-based) to the upper layer (Application layer), something which makes life easy for network administrators who then use apps on top of SDN controllers to configure, manage and monitor the underlying network. The Control layer lies in the middle and it exposes two types of interfaces – Northbound and Southbound.
Northbound interface: is meant for communication with the upper, Application layer and would be in general realized through REST APIs of SDN controllers. Southbound interface: is meant for communication with lower, Infrastructure layer of network elements and would be in general realized through southbound protocols – Openflow, Netconf, Ovsdb, etc.
The application layer is an open area to develop as much innovative application as possible by leveraging all the network information about network topology, network state, network statistics, etc. There can be several types of applications that can be developed like those related to network automation, network configuration and management, network monitoring, network troubleshooting, network policies, and security. Such SDN applications can provide various end-to-end solutions for real-world enterprise and data center networks. Network vendors are coming up with their set of SDN applications.