Future Internet 2020,12, 147 2 of 30
with dynamic network behaviors such as fault management and load changes [
2
]. Despite the wide
adoption of internet protocol (IP) based networks, automatic reconfiguration and response to network
changes are difficult in the current conventional networks, according to Kreutz et al. [2].
SDN decouples the control plane (networking logic) from the data plane (forwarding logic) [
3
].
The control plane consists of controllers acting as a network operating system and the data plane
consists of switches, which mainly forward packets to the next hop. The controller is responsible for
maintaining the global network state in real-time. The separation between control and data planes
is achieved using a standard communication interface such as OpenFlow [
4
]. OpenFlow switches
have Flow Table, which is commonly implemented with Ternary Content Addressable Memory
(TCAM) technology. Typically, a flowtable is populated with rules or policies such as quality of
service (QoS), access control lists (ACLs), and IP route tables for fast-forwarding. However, TCAM is
power-hungry, expensive, and available in limited space or capacity that can only accommodate from
750 to 20,000 flow entries [
5
,
6
]. Thus, the flow table is relatively small compared to the number of
required rules. The centralized architecture of SDN and space limitations of the flow table introduce
some performance and security issues. Attackers may overwhelm the flow table with multiple denial
of service (DoS) attacks and manipulate the controller to refuse writing legitimate flow entries [
7
].
Mitigating the DoS attacks requires the installation of a large number of access control list (ACL)
distributed rules while TCAM is available in only limited capacity or space.
SDN controller populates or updates the flow table reactively or proactively upon occurrence of
some events. In a reactive approach, the controller does not populate the flow table with any rules when
network operation begins. Whenever packets arrive at switches during network operation, rules will
be installed into the flow table by the controller. For the proactive approach, the controller will install
flow entries in the flow table in advance, when network operation begins. The selection of rules is
imperative in maximizing network performance especially in large-scale networks such as data centers.
When packets arrive at a switch during network operation, the flow of arriving packet is matched
against flow entries in the flow table. If matching is not found, the switch will contact the controller
to update the flow table with entries that allow the packet to reach its destination. This involves
communication overhead between controller and switch as well as delay until the packet can be
forwarded to the next hop. The proactive approach was introduced to reduce the communication
overhead involved between switches and controllers.
Another SDN performance issue is regarding the flow table update operation made upon the
occurrence of events such as topology changes [
5
], network reconfiguration [
6
], and the creation of
re-routing rules [
7
]. The routing update operation must be completed within 25 milliseconds (ms) to
meet stringent QoS requirements of real-time applications [
8
]. Similarly, failure recovery has a strict
recovery delay requirement to adhere to the carrier-grade quality [
8
]. Fast rules rerouting depends
on switch rule updating time and controller response time to generate rules. A common challenge
experienced by the SDN controller is to update the switches consistently and promptly. The longer time
the update operation takes, the more probability for the network to have unstable behaviors such as
extra packet processing delay, forwarding loop, and routing errors [
7
]. Thus, the centralized controller,
flow table limitation of commercial switches, and flow table update operation should be dealt with
efficiently to avoid critical performance bottleneck in the deployed production network environment
of OpenFlow-SDN [
5
]. These three issues of SDN have gained great attention from researchers in
recent years [
7
–
11
]. DevoFlow [
9
], DIFANE [
12
], and Kotani [
13
] proposed some schemes to reduce
the processing load of the controller. SDN-Guard [
14
–
16
] have proposed some methods to mitigate
security attacks arisen due to the centralized nature of the controller in SDN. Some solutions were
proposed to reduce higher flowtable update operations [
7
,
17
,
18
]. Other solutions focus on improving
the efficiency of a limited flowtable [19–21].
This paper provides a comprehensive survey on the efforts that have been done on optimizing
the processing load of the controller, mitigating malicious attacks, flow table update operation,
and improving the efficiency of flow table management to ensure stable performance of SDN.