In the architecture of Software-Defined Networking (SDN), the controller is the core component of the control layer and plays a vital role in the performance of the network.In this paper, the structure and performance of SDN controllers are compared and analyzed, and the structure and technical characteristics of centralized control based on single control and distributed control based on multiple controllers are compared and analyzed for SDN controllers proposed by academia and industry.At present, the scale of Internet network is expanding rapidly and network applications are increasing rapidly. In addition, data centers and their networks similar to high-performance requirements have emerged and developed vigorously. Traditional network architecture has been difficult to adapt to this change.Software Definition Network (SDN) is one of the most popular network architectures since it was put forward in 2009. It separates data from control level and adopts centralized control. It has many advantages, such as flexible hardware selection, shorter deployment time, programmable and low cost. OpenFlow protocol is the core communication protocol of SDN, which can meet the needs of current network changes.
At present, the commercial value, technology and programmable design of OpenFlow and SDN have been studied in China [3, 4, 5].As the core component of control layer in SDN architecture, SDN controller is responsible for managing the whole network equipment and resources, and plays a vital role in the good operation of the network.For different network environments, academia and industry have introduced various controllers, such as NOX [6], Beacon [7], Floodlight c8, and an idealized SDN controller structure with comprehensive functions and interfaces [9].In addition, for the rapid expansion of network scale, distributed SDN controllers with higher network performance and scalability have been proposed, such as HyperFlow [10] and Kandoo [11].This paper will introduce the ideal SDN controller structure proposed by academia, and then analyze the single controller suitable for small or medium network scale. Finally, the distributed control structure and technical characteristics of multiple controllers are summarized and analyzed.ONF (Open Network Foundation) proposes a typical SDN architecture which has been widely recognized by academia and industry.The SDN architecture consists of forwarding layer (infrastructure layer), control layer and business layer (application layer) from bottom to top.The forwarding layer represents the physical forwarding devices at the bottom of the network and maintains the flow table structure; the control layer centralizes the management of network devices and resources, and is responsible for the generation and configuration of flow tables, while providing a northbound interface for the business layer; and the business layer implements applications with different functions according to different application requirements.The control layer communicates with the forwarding layer through the south-facing interface, and obtains the information of the network equipment in the forwarding layer. The communication between the control layer and the business layer is completed by the extensible north-facing interface.SDN controller not only provides the state information of network devices in the forwarding layer for the network application of the upper business layer, but also generates and configures the flow tables of the underlying network devices, which is the bridge connecting the upper business layer and the lower forwarding layer.NadeauTD and GrayK present an idealized SDN controller framework [9], as shown in Figure 1.Network state management, through some databases to save network equipment and SDN application control, status and configuration information.A high-level data model is used to describe the relationship between managed network resources, corresponding policies and other services provided by the controller.Perfect North-Oriented Interface (RestAPI), which provides business-level applications, provides an interface for communication between applications and controllers, and achieves the purpose of network management.Based on the standard protocol adaptation function, the driver state of the application program on the network device in the forwarding layer is configured.Management of network devices, topologies and virtual networks.The system of path calculation is established, and the path calculation and protocol support are completed by the PCE server.Reliable session, through TCP connection between the controller and network devices to establish a reliable session.Many factors, such as the development efficiency of the controller, the supporting south-facing interface protocol and performance, thermostatic element will affect the choice of developers and researchers.Number of messages responded and processed per unit time of the controller.The average delay of each message is processed by the controller.Because reading OpenFlow messages from network cards and communicating with OpenFlow switches are the most time-consuming part of the OpenFlow controller operation process [14].If the OpenFlow controller is embedded in the system core as a module, the time for the controller to read the OpenFlow message and communicate with the OpenFlow switch will be reduced, which will greatly increase the number of messages processed per unit time of the controller and reduce the processing delay of the controller [14].The control plane in SDN control layer was initially implemented by deploying a single controller.In this paper, several SDN controllers with single controller are introduced by academia and industry, and their development language and supporting system environment are analyzed.Nicira’s team developed a network operating system NOX [6] and donated it to the research community in 2008.
It was the first open source OpenFlow controller, using an asynchronous and event-based programming model. Its original version was implemented in two programming languages, C and Python, and only supported single-threaded operations.NOX provides an application programming interface (API) for C or Python, and uses a component-based framework to develop the application’9′.
For the single thread operation mode of NOX, the Toronto team proposed a controller NOX-Mr [13], which has more powerful performance.MOX-MT uses traditional parallel technology to increase the number of messages processed per unit time of NOX and reduce its response delay.But it does not change the basic structure of NOX, nor can it solve the performance deficiencies of NOX, such as excessive memory copy based on each request and large use of dynamic memory allocation, etc. [10], and upgrading from NOX to NOX-MT will not cause inconsistency [15].POX [16] is an updated Python-based controller developed by the NOX team. Its event handling mechanism and programming mode are consistent with NOX and adopt multi-threaded operation mode.POX provides reusable components such as path selection, topology discovery, and a set of Python-based OpenFlow interfaces to support the same graphical user interface (GUI) and virtualization T tools as NOX.Rvu [17] is a component-based open source SDN controller developed by NTT Company in Japan. It is fully implemented by Python and supports Python to develop applications on it. It also supports applications developed by other languages in Ryu’s message service.Ryu supports a variety of southbound interface protocols, including OpenFlow, Netconf and OF-config.Ryu provides complete components, such as message mechanism, application management, event management, etc. through defined APIs.
It also provides applications and services such as Layer 2 switch, detection, GRE tunnel abstraction and so on.Beacon [7] is an open source SDN controller based on Java designed and developed by Stanford University in 2010. It adopts multi-threaded operation mode, and has high performance and strong stability.Beacon provides application components including general functions required by control plane such as topology, device management and routing, and manages network devices through OpenFlow protocol. At the same time, Beacon also supports user-defined applications.Beacon provides developers with a series of shelf libraries and APIs, as well as a Web UI-based management control.Beacon enables developers to dynamically add or delete modules while Beacon is running by providing the user interface OpenService Gateway Interface (OSGI).In the v1.0.2 version of Beacon, the I/O design of the customized version optimizes the performance, so the new version of Beacon has powerful performance [7].
Floodlight [8] 1 is an enterprise-level SDN controller developed by BigSwitch Company based on Java and donated to the open source community. It uses Apache 2.0 license open source protocol standard and multi-threaded operation mode to provide a visual Web UI.BigSwitch’s commercial version controller BigNetwork Controller (BNC) shares the architecture and API of Floodlight, so Floodlight-based applications can be directly applied to BNC.Floodlight uses a modular core architecture, including device management, Web access and management, topology management, etc. [5], and provides a module loading system for easy module expansion and enhancement.By providing a series of extensible RESTAPIs and event notification systems, developers can obtain network device information and set the state of the controller.Because its core architecture comes from commercial BNC controllers, Floodlight has relatively strong performance, but because Floodlight is based on Beacon source code that has not been optimized for I/O, its performance is not as good as that of optimized Beacon [7].OpenDaylight [18] is a project proposed by the Linux Foundation in conjunction with Cisco, Juniper and other network equipment manufacturers and software companies. The goal is to achieve an open source platform with network programmability, so as to flexibly deploy SDN and create a solid foundation for network function virtualization (NFV).OpenDaylight has a set of modular and plug-in SDN controllers. The architecture of its controllers is divided into three levels: South-Oriented protocol plug-in layer, service abstraction layer and north-oriented application function [19].Service Adaptation Layer (SAL) separates South-to-South protocol plug-ins from north-to-north application plug-ins. It supports many South-to-South protocol plug-ins and converts South-to-North protocol standards into request services that can be used by north-to-north applications. At the same time, it converts North-to-South application messages into South-to-protocol-compliant formats, which ensures the transparency of south-to-to-south protocols.Apart from OpenFlow, the Southward Protocol Plug-ins supported by OpenDaylight Controller also include Netconf, BGP and Path Computation Element Protocol (PCEP), which is the biggest difference from ONF’s SDN architecture.
The Southward Protocol Plug-ins of ONF’s SDN architecture usually only support OpenFlow [20].The main features and parameters of the above SDN controllers supporting centralized control are compared and analyzed (Table 1).The main development languages of controller are Python, C and Java. The controller based on Python is easy to use and flexible. The controller based on C can provide good performance, while the controller based on Java has abundant APIs.Except for NOX, other SDN controllers adopt multi-threading operation mode.At the same time, except the early NOX, NOX-MT and POX controllers do not support OpenStack, the subsequent SDNI controllers can be deployed on OpenStack, which shows that OpenStack support has become the design trend of SDN controllers.In order to reduce deployment cost and improve deployment flexibility, supporting multiple southward protocol interfaces has become the development trend of SDN controllers.For smaller networks, centralized control can ideally manage network resources and network equipment.However, a large-scale network is usually divided into several different domains. If the centralized control of a single controller is adopted, the communication between the controller and the cross-domain switch will have a large delay, which will affect the performance and scalability of the controller [21].Therefore, distributed control is the development trend of large-scale network based on SDN.The basic idea of distributed control is to deploy one or more controllers in each domain, and the controllers manage the resources of network devices uniformly by protocol.The structure of distributed control can be divided into two kinds of [21,22]: hierarchical SDN control and flat SDN control.Figure 2 shows a typical hierarchical SDN control structure. Different controllers are assigned to different levels. Local controllers deal with most of the underlying data channel events in their domain and shield higher levels. Root controllers (global controllers) control local controllers and complete the interaction between local controllers.Figure 3 shows a flat SDN control network structure [21]. The management of each domain is accomplished by the controller in the domain. All the controllers in the whole network are at the same level. The update of network state or topology will be synchronized to all controllers.HyperFlow [10] is the first event-based distributed controller proposed in 2010, which is implemented as an application on NOX.By deploying multiple controllers in a large network, all controllers share the same global network view, and communicate in the publish/subscribe mode of message [23], each controller handles service requests in the domain without establishing connections with any remote nodes, thus reducing the establishment time of flow tables.HyperFlow is designed based on WheeIFS, a distributed file system, and uses file updates to transfer network events between controllers.Although HyperFlow is simple to implement (a few modifications to NOX), its performance is low, and communication between controllers will incur large overhead in the case of large network scale or frequent updates of network events.Onixc24 is a distributed controller for large-scale network proposed in 2010.
Its architecture consists of physical infrastructure, connection infrastructure, Onix and control logic.In Onix network, a network information base (NIB) maintains the global network state. NIB is not only the core of Onix control mode, but also the basis of Onix distribution mode. Network control applications deploy by reading and writing information in NIB, and ensure the consistency of network state information by maintaining the distribution mechanism of NIB.Kandoo [11] is a distributed controller based on hierarchical SDN control proposed in 2012.
It divides the controller into different levels, namely, the top-level root controller and the local controller connected to the top-level network devices (as shown in Figure 3). The root controller is responsible for the global management and communication between the controllers, and the local controller is responsible for the management of local information.In Kandoo network, the switch first sends the request information to the local local switch; if the local switch can process the request, it sends the reply information to the switch, otherwise it is forwarded to the root controller; this effectively reduces the processing burden and interaction frequency of the root controller.In a word, the distributed SDN controller is proposed to solve the problems such as the controller performance can not be guaranteed in the centralized control of a single controller and the time delay of cross-domain request is too long.Table 2 summarizes the three distributed controllers introduced from 4.1 to 4.3.The advantages of SDN, such as programmability, separation of data and control plane and centralized control, make the deployment and management of network flexible, intelligent and convenient.The development of SDN controllers has changed from single thread, single southward protocol interface and centralized control of single controller to multithreading, support of multiple southward protocol interfaces and distributed control of multiple controllers, and support for deployment on OpenStack has become the design trend of controllers.This paper introduces and analyses the structure and characteristics of idealized SDN controller, centralized control of single controller and distributed control of multiple controllers, and compares the development language of each controller in centralized control plane of single controller, south/north interface, operation environment and so on.At the same time, the structure and technical characteristics of three main distributed controllers are summarized.