The disclosure relates generally to communication networks and, more specifically but not exclusively, to Software Defined Networking (SDN).
Software Defined Networking has emerged as a networking paradigm of much research and commercial interest.
Various deficiencies in the prior art are addressed by embodiments for scaling a control plane of a software defined network.
In at least some embodiments, an apparatus includes a processor and a memory communicatively connected to the processor, where the processor is configured to propagate, toward a physical switch of the software defined network, a default flow forwarding rule indicative that, for new traffic flows received at the physical switch, associated indications of the new traffic flows are to be directed to a virtual switch. In at least some embodiments, an associated method is provided. In at least some embodiments, a computer-readable storage medium stored instructions which, when executed by a computer, cause the computer to perform an associated method.
In at least some embodiments, an apparatus includes a processor and a memory communicatively connected to the processor, where the processor is configured to receive, from a virtual switch, a new flow request message associated with a first packet of a new traffic flow received by a physical switch of the software defined network, and process the new flow request message received from the virtual switch. In at least some embodiments, a computer-readable storage medium stores instructions which, when executed by a computer, cause the computer to perform a method including functions described as being performed by the apparatus. In at least some embodiments, a method includes using a processor and a memory to perform functions described as being performed by the apparatus.
In at least some embodiments, an apparatus includes a processor and a memory where the memory is configured to store a flow table including a default flow forwarding rule and the processor, which is communicatively connected to the memory, is configured to receive a first packet of a new traffic flow and propagate the first packet of the new traffic flow toward a virtual switch based on the default flow forwarding rule. In at least some embodiments, a computer-readable storage medium stores instructions which, when executed by a computer, cause the computer to perform a method including functions described as being performed by the apparatus. In at least some embodiments, a method includes using a processor and a memory to perform functions described as being performed by the apparatus.
In at least some embodiments, an apparatus includes a processor and a memory communicatively connected to the processor, where the processor is configured to receive, from a physical switch of the software defined network, a first packet of a new traffic flow, and propagate, toward a central controller of the software defined network, a new flow request message determined based on the first packet of the new traffic flow received from the physical switch. In at least some embodiments, a computer-readable storage medium stores instructions which, when executed by a computer, cause the computer to perform a method including functions described as being performed by the apparatus. In at least some embodiments, a method includes using a processor and a memory to perform functions described as being performed by the apparatus.
The teachings herein can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements common to the figures.
Software Defined Networking has emerged as a networking paradigm of much research and commercial interest. In general, a key aspect of a Software Defined Network (SDN) is separation of the control plane (typically referred to as the SDN control plane) and the data plane (typically referred to as the SDN data plane). The data plane of the SDN is distributed and includes a set of forwarding elements (typically referred to as switches) that are controlled via the control plane. The control plane of the SDN is logically centralized and includes a central controller (or multiple central controllers) configured to control the switches of the data plane using control channels between the central controller and the switches of the data plane. Thus, the switches also may be considered to include control plane portions which are configured to handle control messages from the central controller. More specifically, the switches perform handling of traffic flows in the SDN under the control of the central controller, where the switches include respective flow tables which may be used by the switches for handling packets of traffic flows received at the respective switches and the central controller configures the respective flow tables used by the switches for handling packets of traffic flows received at the respective switches. The central controller may configure the flow tables of the switches in proactive mode (e.g., a priori configured) or reactive mode (e.g., on demand). The reactive mode, which typically permits finer-grained control of flows, is generally invoked when a new flow is detected at a switch and the flow table at the switch does not include an entry corresponding to the new flow, and typically requires control-based communications between the switch and the central controller in order to enable the SDN to support the new flow. It will be appreciated that the SDN may be implemented using any suitable type of SDN architecture (e.g., OpenFlow, a proprietary SDN architecture, of the like).
While use of logically centralized control provides various benefits for SDNs (e.g., maintaining a global network view, simplifying programmability, and the like), use of logically centralized control in the form of a central controller can negatively affect SDN performance if the control plane between the central controller and switches controlled by the central controller becomes a bottleneck. Namely, since the central controller and switches controlled by the central controller are separated and handling of reactive flows depends upon communication between the central controller and switches controlled by the central controller, it is important that there are no conditions that interrupt or limit communications between the central controller and switches controlled by the central controller. This may be particularly important if a switch is configured to operate with a relatively large fraction of reactive flows requiring communication between the switch and its central controller. For example, communication bottlenecks impacting communications between the central controller and a switch may lead to poor performance of the switch (especially for reactive flows), and complete saturation of the communication channel between the central controller and a switch may essentially render the switch disconnected from the central controller such that the flow table of the switch cannot be changed in response to new flow or network conditions. It will be appreciated that such conditions which may impact communications between the central controller and switches controlled by the central controller may result from conditions in the SDN, attacks on the SDN, or the like, as well as various combinations thereof. For example, network conditions such as flash crowds, failure conditions, or the like, may reduce or stop communications between the central controller and switches controlled by the central controller. Similarly, for example, a malicious user may attempt to saturate communication channels between the central controller and switches controlled by the central controller in order to negatively impact or even stop network operation by reducing or stopping communications between the central controller and switches controlled by the central controller. It will be appreciated that various other conditions may impact communication between the central controller and a switch or switches.
In a typical SDN based on OpenFlow, control functions are provided by an OpenFlow central controller and packet processing forwarding functions are provided by a set of OpenFlow switches. In general, each of the OpenFlow switches includes a data plane portion and a control plane portion (typically referred to as the Open Flow Agent (OFA)). The data plane of a switch is responsible for packet processing and forwarding, while the OFA of the switch allows the central controller to interact with the data plane of the switch such that the central controller can control the behavior of the data plane of the switch. The OFA of the switch may communicate with the central controller via a communication channel (e.g., via a secure connection such as a secure Transmission Control Protocol (TCP) connection or any other suitable type of connection). As described above, each switch maintains a flow table (or multiple flow tables) storing flow forwarding rules according to which traffic flows are processed at and forwarded by the switch. In a typical SDN based on OpenFlow, when a packet of a traffic flow arrives at a switch, the data plane of the switch performs a lookup in the flow table of the switch, based on information in the packet, in order to determine handling of the packet at the switch. If the packet does not match any existing rule in the flow table, the data plane of the switch treats the packet as a first packet of a new flow and passes the packet to the OFA of the switch. The OFA of the switch encapsulates the packet into a Packet-In message and propagates the message to the central controller via the secure connection between the switch and the central controller. The Packet-In message includes either the packet header or the entire packet, depending on the configuration, as well as other information (e.g., the ingress port of the switch on which the packet was received or the like). The central controller, upon receiving the Packet-In message from the switch, determines handling of the traffic flow of the packet (e.g., based on one or more of policy settings, global network state, or the like). The central controller may determine whether or not the traffic flow is to be admitted to the SDN. If the flow is admitted, the central controller computes the flow path and installs forwarding rules for the traffic flow at switches along the flow path computed by the central controller for the traffic flow. The central controller may install the flow forwarding rules at the switches by sending flow modification commands to each of the switches. The OFAs of the switches, upon receiving the respective flow modification commands from the central controller, install the flow forwarding rules into the respective flow tables of the switches. The central controller also may send a Packet-Out message to the switch from which the Packet-In message was received (i.e., the switch that received the first packet of the new traffic flow) in order to explicitly instruct the switch regarding forwarding of the first packet of the new traffic flow.
While there are various benefits of using the typical SDN based on OpenFlow that is described above (as well as other variations of SDNs based on OpenFlow), one problem with the current OpenFlow switch implementation is that the OFA of the switch typically runs on a relatively low-end CPU that has relatively limited processing power (e.g., as compared with the CPU used to support the central controller). While this seems to be an understandable design choice (given that one intention of the OpenFlow architecture is to move the control functions out of the switches so that the switches can be implemented as simpler, lower cost forwarding elements), this implementation can significantly limit the control plane throughput. This limitation may be problematic in various situations discussed above (e.g., during conditions which impact communications between the central controller and switches controlled by the central controller, which may include naturally occurring conditions, attacks, or the like). Additionally, although the communication capacity between data plane and central controller may improve over time in the future, it is expected that the data plane capacity of a switch will always be much greater than the control plane capacity of the switch such that, even if the control plane capacity of switches in the future is relatively high compared with control plane capacity of switches today, the control plane capacity of the switch may still get overwhelmed under certain conditions (e.g., during a DoS attack, when there are too many reactive flows, or the like).
This limitation of the typical SDN based on OpenFlow may be better understood by considering a Distributed Denial-of-Service (DDoS) attack scenario in which a DDoS attacker generates spoofed packets using spoofed source IP addresses. The switch treats each spoofed packet as a new traffic flow and forwards each spoofed packet to the central controller. However, the insufficient processing power of the OFA of the switch limits the rate at which the OFA of the switch can forward the spoofed packets to central controller, as well as the rate at which the OFA of the switch can insert new flow forwarding rules into the flow table of the switch as responses for the spoofed packets are received from the central controller. In other words, a DDoS attack can cause Packet-In messages to be generated at much higher rate than what the OFA of the switch is able to handle, effectively making the central controller unreachable from the switch and causing legitimate traffic flows to be blocked from the OpenFlow SDN even though there is no data plane congestion in the OpenFlow SDN. It will be appreciated that the DDoS attack scenario merely represents one type of situation which may cause control plane overload, and that blocking of legitimate traffic flows may occur when the control plane is overloaded due to other types of conditions.
The impact of control plane overload on SDN packet forwarding performance due to an attempted DDoS was evaluated in a testbed environment. The testbed environment included a server, a client, and an attacker, where the client and the attacker were both configured to initiate new flows to the server. The communication between the client and the attacker and the server is via an SDN including a set of switches. The testbed environment used two hardware switches as follows: a Pica8 Pronto 3780 switch and an HP Procurve 6600 switch, with OpenFlow 1.2 and 1.0 support, respectively. The testbed environment, for comparison purposes, also used a virtual switch running on a host with an Intel Xeon 5650 2.67 GHz CPU. The testbed environment also used a Ryu OpenFlow controller, which supports OpenFlow 1.2 and is the default controller used by Pica8. The Pica8 switch had 10 Gbps data ports, and the HP switch and the virtual switch each had 1 Gbps data ports. The management ports for all three of the switches were 1 Gbps ports. The client, attacker, and server were each attached to the data ports, and the central controller was attached to the management port. The hping3 network tool was used to generate attacking traffic. The switches were evaluated one at a time. When evaluating a switch, both the client and the attacker attempt to initiate new flows to the server (the new flow rate of the client was set to be constant at 100 flows/sec, and the new flow rate of the attacker was varies between 10 flows/sec and 3800 flows/sec), the flow rate at both the sender and receiver sides was monitored, and the associated flow failure rate (i.e., the fraction of flows, from amongst all the flows, that cannot go through the switch) was calculated. It was determined that both of the hardware switches had a much higher flow failure rate than the virtual switch. It also was determined that, even at the peak attack rate of 3800 flows/sec, the attack traffic was still only a small fraction of the data link bandwidth, indicating that the bottleneck is in the control plane rather than in the data plane. The testbed environment also was used to identify which component of the control plane is the actual bottleneck of the control plane. Recalling that a new flow received at a switch may only be successfully accepted at the switch if the required control plane actions (namely, sending a Packet-In message from the OFA of the switch to the central controller; (2) sending of a new flow forwarding rule from the central controller to the OFA of the switch; and (3) insertion, by the OFA of the switch, of the new flow forwarding rule into the flow table of the switch) are completed successfully, it was determined that identification of the component of the control plane that is the actual bottleneck of the control plane may be performed based on measurements of the Packet-In message rate, the flow forwarding rule insertion event rate, and the received packet rate at the destination (i.e., the rate at which new flows successfully pass through the switch and reach the destination). In the experiments it was determined, for at least one of the switches, that the Packet-In message rate, the flow rule insertion event rate, and the received packet rate at the destination were identical or nearly identical. It also was determined that even with a maximum packet size of 1.5 KB, the peak rate for 150 Packet-Ins/sec was 1.8 Mbps, which is well below the 1 Gbps control link bandwidth. These results were analyzed and determined to be suggestive that the capability of the OFA in generating Packet-In messages is the bottleneck, or at least a primary contributor to the bottleneck of the control plane in typical OpenFlow-based SDN implementations. It is noted that further experimentation produced results which, when analyzed, were determined to be suggestive that the rule insertion rate supported by the switch is greater than the Packet-In message rate supported by the switch.
Based on the discussion above, the following observations have been made regarding scaling of the SDN control plane: (1) the control plane at the physical switches has limited capacity (e.g., the maximum rate at which new flows can be set up at the switch is relatively low—typically several orders of magnitude lower than the data plane rate); (2) vSwitches, when compared with physical switches, have higher control plane capacity (e.g., attributed to the more powerful CPUs on the general purpose computers on which the vSwitches typically run) but lower data plane throughput; and (3) operation of SDN switches cooperating in reactive mode can be easily disrupted by various conditions which impact communications between the central controller and switches controlled by the central controller (e.g., which may include naturally occurring conditions, attacks, or the like). Based on these and other observations and measurements, various embodiments for scaling SDN control plane capacity to improve SDN control plane throughput and resiliency are presented herein.
Various embodiments of the capability for scaling of the SDN control plane capacity may utilize SDN data plane capacity in order to scale the SDN control plane capacity. The SDN data plane capacity may be used to scale communication capacity between the central controller and the switches that are controlled by the central controller. More specifically, the relatively high availability of SDN data plane capacity may be exploited to significantly scale the achievable throughput between the central controller and the switches that are controlled by the central controller. In at least some embodiments, the SDN control plane capacity may be scaled using a vSwitch-based overlay network (at least some embodiments of which also may be referred to herein as SCOTCH) to provide additional SDN control plane capacity. Various embodiments of the capability for scaling of the SDN control plane capacity may be better understood by way of reference to an exemplary communication system using a vSwitch-based overlay network to provide scaling of SDN control plane capacity, as depicted in
The CC 110 may be implemented within communication system 110 in any suitable manner for implementing a central controller of an SDN. The CC 110 is configured to provide data forwarding control functions of the SDN within the communication system 100. The CC 110 is configured to communicate with each of the other elements of communication system 100 via respective control plane paths 111 (depicted as dashed lines within
The pSwitch 120 is configured to provide data forwarding functions of the SDN within communication system 100. As discussed above, pSwitch 120 includes the control plane portion 121 and the data plane portion 122. It is noted that, given that the communication system 100 uses an OpenFlow based implementation of the SDN, the control plane portion 121 of pSwitch 120 is an OFA. As depicted in
The vSwitches 130, similar to pSwitch 120, are configured to provide data forwarding functions of the SDN within communication system 100. Additionally, similar to pSwitch 120, each of the vSwitches 130 includes a control plane portion and a data plane portion, where the data plane portion includes a flow table storing traffic flow rules for the respective vSwitch 130. Additionally, also similar to pSwitch 120, the flow tables of the vSwitches 130 include default flow forwarding rules according to which packets of new traffic flows received by vSwitches 130 are to be handled, respectively. For purposes of clarity, only the details of vSwitch 1303 are illustrated in
The vSwitches 130 may be implemented within communication system 100 in any suitable manner for implementing vSwitches. The vSwitches 130 may be implemented using virtual resources supported by underlying physical resources of communication system 100. For example, a vSwitch 130 may be embedded into installed hardware, included in server hardware or firmware, or implemented in any other suitable manner. The vSwitches 130 may include one or more dedicated vSwitches, one or more dynamically allocated vSwitches, or the like, as well as various combinations thereof. The vSwitches 130 may be deployed at any suitable locations of the SDN. For example, where communication system 100 is a datacenter, vSwitches 130 may be instantiated on servers identified as being underutilized (e.g., relatively lightly loaded with underutilized link capacity). For example, where the communication system 100 is a datacenter, the vSwitches 130 may be distributed across different racks in the datacenter. The typical implementation of a vSwitch will be understood by one skilled in the art.
The servers 140 are devices configured to support hosts to which traffic received at the communication system 100 may be delivered using the underlying SDN (which are omitted for purposes of clarity). For example, the hosts of servers 1401 and 1402 may be implemented as VMs for which traffic received at the communication system 100 may be intended. As discussed above, servers 1401 and 1402 include respective host vSwitches 1411 and 1412, which may be configured to handle forwarding of packets received at servers 140, respectively. The servers 140 and associated host vSwitches 141 may be implemented in any other suitable manner.
The communication system 100 includes three types of tunnels used to support communications between the various elements of the SDN: L-tunnels 151, V-tunnels 152, and H-tunnels 153. The L-tunnels 151 are established as data plane tunnels between pSwitch 120 and vSwitches 130 (illustratively, a first L-tunnel 1511 between pSwitch 120 and vSwitch 1303, and a second L-tunnel 1512 between pSwitch 120 and vSwitch 1304). The V-tunnels 152 are established as data plane tunnels between vSwitches 130, thereby forming an overlay network of vSwitches 130 (also referred to herein as a vSwitch-based overlay network or vSwitch-based overlay). The H-tunnels 153 are established as data plane tunnels between vSwitches 130 and host vSwitches 141 of servers 140 (illustratively, a first H-tunnel 1531 between vSwitch 1301 and host vSwitch 1411, and a second H-tunnel 1532 between vSwitch 1302 and host vSwitch 1412). The various tunnels 151, 152, and 153 provide an overlay network for the SDN. The tunnels 151, 152, and 153 may be established using any suitable tunneling protocols (e.g., Multiprotocol Label Switching (MPLS), Generic Routing Encapsulation (GRE), MAC-in-MAC, or the like, as well as various combinations thereof).
The operation of communication system 100 in providing various functions of the capability for scaling of the SDN control plane capacity for handling of a new traffic flow received at the SDN may be better understood by way of reference to
The CC 110 is configured to monitor the control plane portion 121 of pSwitch 120 and, responsive to detection of a congestion condition associated with the control plane portion 121 of pSwitch 120, to control reconfiguration of the data plane portion of pSwitch 120 to alleviate or eliminate the detected congestion condition associated with the control plane portion 121 of pSwitch 120. The CC 110 may monitor the control plane portion 121 of pSwitch 120 by monitoring the load the control plane path 111 between CC 110 and the pSwitch 120. For example, CC 110 may monitor the rate of messages sent from the control plane portion 121 of pSwitch 120 to the CC 110 in order to determine if the control plane portion 121 of pSwitch 120 is overloaded (e.g., where the rate of messages exceeds a threshold). The CC 110 is configured to modify the default flow forwarding rule 125D of pSwitch 120 based on a determination that the control plane portion 121 of pSwitch 120 is overloaded. In a typical SDN, the default flow forwarding rule 125D would specify that an indication of the first packet of a new traffic flow received by pSwitch 120 is to be directed to the CC 110 as a Packet-In message; however, in the SDN of the system of
The pSwitch 120 is configured to receive a packet of a traffic flow via an external interface (depicted as step 220 in
The vSwitch 1303 is configured to receive the first packet of the new traffic flow from the data plane portion 122 of pSwitch 120 via the L-tunnel 1511 between pSwitch 120 and vSwitch 1303 (depicted as step 230 in
The CC 110 is configured to receive the Packet-In message from the vSwitch 1303 via the control plane path 111 between vSwitch 1303 and CC 110. The CC 110 processes the Packet-In message for the new flow in order to determine a path for the new traffic flow through the SDN. As noted above, the new traffic flow received at the SDN is intended for delivery to a host on server 1401. Thus, CC 110 determines that the routing path for the new traffic flow is pSwitch 120→vSwitch 1303→vSwitch 1301→host vSwitch 1411→destination host on server 1401. The CC 110 generates flow forwarding rules for the new traffic flow for each of the forwarding elements along the routing path determined for the new traffic flow and forwards the flow forwarding rules for the new traffic flow to each of the forwarding elements along the routing path via control plane paths 111 between CC 110 and the forwarding elements along the determined routing path, respectively. The flow forwarding rules for the forwarding elements each include a flow identifier to be used by the forwarding elements to identify packets of the new traffic flow. The CC 110 may determine the flow identifier for the new traffic flow in any suitable manner (e.g., based on flow information included in the Packet-In message received by the CC 110). Namely, as depicted in
In at least some embodiments, the vSwitch-based overlay of
In at least some embodiments, the vSwitch-based overlay of
In at least some embodiments, the CC 110 may be configured to determine the physical switch identifier of pSwitch 120 when vSwitch 1303 provides the Packet-In message to CC 110 on behalf of pSwitch 120. The CC 110 may be configured to determine the physical switch identifier of pSwitch 120 based on a mapping of tunnel identifiers to switch identifiers that is maintained at CC 110. The mapping of tunnel identifiers to switch identifiers is a mapping of identifiers of L-tunnels to identifiers of pSwitches with which the L-tunnels are associated (illustratively, mapping of the two L-tunnels 151 to the pSwitch 120). The CC 110 may be configured such that, upon receiving a Packet-In message from vSwitch 1303, CC 110 may identify a tunnel identifier in the Packet-In message and perform a lookup using the tunnel identifier as a key in order to determine the physical switch identifier associated with the tunnel identifier (where the physical switch identifier identifies the pSwitch 120 from which vSwitch 1303 received the first packet of the new traffic flow).
In at least some embodiments, vSwitch 1303 may be configured to determine the physical switch identifier of pSwitch 120 and inform CC 110 of the physical switch identifier of pSwitch 120. The vSwitch 1303 may be configured to determine the physical switch identifier of pSwitch 120 based on a mapping of tunnel identifiers to physical switch identifiers and may include the determined physical switch identifier of the pSwitch 120 in the Packet-In message that is sent to CC 110. The mapping of tunnel identifiers to switch identifiers is a mapping of identifiers of L-tunnels to identifiers of pSwitches with which the L-tunnels are associated (illustratively, mapping of the two L-tunnels 151 to the pSwitch 120). The vSwitch 1303 may be configured such that, upon receiving a first packet of a new traffic flow from pSwitch 120, vSwitch 1303 may identify a tunnel identifier in the first packet of the new traffic flow, perform a lookup using the tunnel identifier as a key in order to determine the physical switch identifier associated with the tunnel identifier (where the physical switch identifier identifies the pSwitch 120 from which vSwitch 1303 received the first packet of the new traffic flow), and include the physical switch identifier of pSwitch 120 in the Packet-In message that is sent to CC 110.
In at least some embodiments, CC 110 may determine the original ingress port identifier of pSwitch 120 using an additional label or identifier. In at least some embodiments, pSwitch 120 may add the additional label or identifier to the first packet of the new traffic flow before sending the first packet of the new traffic flow to vSwitch 1303, vSwitch 1303 may add the additional label or identifier from the first packet of the new traffic flow to the Packet-In message sent to CC 110 by vSwitch 1303, and CC 110 may determine the original ingress port identifier of pSwitch 120 using the additional label or identifier in the Packet-In message received from vSwitch 1303. In embodiments in which MPLS is used for tunneling packets within the vSwitch-based overlay, for example, pSwitch 120 may push an inner MPLS label into the packet header of the first packet of the new traffic flow based on the original ingress port identifier and send the first packet of the new traffic flow to vSwitch 1303, vSwitch 1303 may then access the inner MPLS label (e.g., after removing the outer MPLS label used to send the first packet of the new traffic flow from pSwitch 120 to vSwitch 1303) and include the inner MPLS label in the Packet-In message sent to CC 110, and CC 110 may determine the original ingress port identifier of pSwitch 120 based on the inner MPLS label in the Packet-In message. In embodiments in which GRE is used for tunneling packets within the vSwitch-based overlay, for example, pSwitch 120 may set a GRE key within the packet header of the first packet of the new traffic flow based on the original ingress port identifier and send the first packet of the new traffic flow to vSwitch 1303, vSwitch 1303 may then access the GRE key and include the GRE key in the Packet-In message sent to CC 110, and CC 110 may determine the original ingress port identifier of pSwitch 120 based on the GRE key in the Packet-In message. It will be appreciated that the original ingress port identifier of pSwitch 120 may be communicated to CC 110 in other ways (e.g., embedding by pSwitch 120 of the original ingress port identifier within an unused field of the header of the first packet of the new traffic flow and then embedding by vSwitch 1303 of the original ingress port identifier within an unused field of the header of the associated Packet-In message sent by vSwitch 1303 to CC 110, configuring vSwitch 1303 to determine the original ingress port identifier based on a mapping of the additional label or identifier to the original ingress port identifier and to include the original ingress port identifier within the associated Packet-In message sent to CC 110, or the like, as well as various combinations thereof).
In at least some embodiments, the vSwitch-based overlay of
In at least some embodiments, the vSwitch-based overlay of
In at least some embodiments, the vSwitch-based overlay of
In at least some embodiments, as noted above, the vSwitch-based overlay of
In at least some embodiments, the vSwitch-based overlay of
In at least some embodiments, CC 110 may be configured to control large flow migration. In at least some embodiments, CC 110 may be configured to identify large traffic flows on the vSwitch-based overlay and control migration of large traffic flows from the vSwitch-based overlay to the physical network portion of the SDN. The CC 110 may be configured to identify large traffic flows on the vSwitch-based overlay by querying vSwitches 130 for flow stats of traffic flows on the vSwitch-based overlay (e.g., packet counts or other suitable indicators of traffic flow size) and analyzing the flow stats of traffic flows on the vSwitch-based overlay to identify any large traffic flows on the vSwitch-based overlay. The CC 110 may control migration of a large traffic flow from the vSwitch-based overlay to the physical network portion of the SDN by computing a path for the large traffic flow in the physical network portion of the SDN and controlling establishment of the path for the large traffic flow in the physical network portion of the SDN such that the large traffic flow continues to flow within the physical network portion of the SDN rather than the vSwitch-based overlay portion of the SDN. For example, CC 110 may control migration of a large traffic flow from the vSwitch-based overlay to the physical network portion of the SDN by computing a path for the large traffic flow in the physical network portion of the SDN and inserting associated flow forwarding rules into the flow tables of the pSwitch of the path computed for the large traffic flow in the physical network portion of the SDN (illustratively, into flow table 124 of pSwitch 120). It is noted that, in order to ensure that the path for the large traffic flow is established within the physical network portion of the SDN before the large traffic flow is migrated to the physical network portion of the SDN, the flow forwarding rule for the first pSwitch of the large traffic flow may be inserted into the flow table of the first pSwitch only after the flow forwarding rule(s) for any other pSwitches along the computed path have been inserted into the flow table(s) of any other pSwitches along the computed path (since the changing of the flow forwarding rule on the first pSwitch of the large traffic flow is what triggers migration of the large traffic flow such that the first pSwitch begins forwarding packets of the large traffic flow to a next pSwitch of the physical network portion of the SDN rather than to the vSwitches 130 of the vSwitch-based overlay portion of the SDN).
In at least some embodiments, CC 110 may be configured as depicted in
In at least some embodiments, CC 110 may be configured to give priority to its queues as follows: admitted flow queue 340 receives the highest priority, large flow queue 320 receives the next highest priority, and the queues 310 receive the lowest priority. The use of such a priority order causes relatively small traffic flows to be forwarded on the physical network portion of the SDN only after all of the large traffic flows have been accommodated.
In at least some embodiments, the vSwitch-based overlay of
As depicted in
As depicted in
As further depicted in
It will be appreciated that, although primarily depicted and described with respect to a particular type of middlebox connection (illustratively, where middlebox 450 is disposed on a path between two pSwitches 420), various embodiments for migration of a traffic flow from the vSwitch-based overlay network to the physical network portion of the SDN in a manner for ensuring that the same policy constraints are satisfied may be provided where other types of middlebox connections are used. In at least some embodiments, for example, the middlebox may be integrated into the pSwitch (e.g., in
It will be appreciated that, although primarily depicted and described with respect to a particular type of middlebox (namely, a firewall), various embodiments for migration of a traffic flow from the vSwitch-based overlay network to the physical network portion of the SDN in a manner for ensuring that the same policy constraints are satisfied may be provided where other types of middleboxes are used.
In at least some embodiments, the vSwitch-based overlay of
First, CC 110 ensures that traffic flows currently being routed via the vSwitch-based overlay continue to be routed via the vSwitch-based overlay. Namely, for each traffic flow currently being routed via the vSwitch-based overlay, CC 110 installs an associated flow forwarding rule in flow table 124 of pSwitch 120 which indicates that the traffic flow is to be forwarded to the vSwitch 130 to which it is currently forwarded. It is noted that, where large traffic flows have already been migrated from the vSwitch-based overlay to the physical network portion of the SDN, most of the traffic flows for which rules are installed are expected to be relatively small flows which may terminate relatively soon.
Second, CC 110 modifies the default flow forwarding rule 125D of pSwitch 120. Namely, the default flow forwarding rule 125D of pSwitch 120 is modified to indicate that Packet-In messages for new traffic flows are to be directed to CC 110 (rather than to vSwitch 1303, as was the case when new traffic flows were offloaded from the control plane portion 121 of pSwitch 120 due to overloading of the control plane portion 121 of pSwitch 120). The CC 110 modifies the default flow forwarding rule 125D on pSwitch 120 by sending a flow table modification command to pSwitch 120 via the control plane path 111 between CC 110 and the pSwitch 120.
Third, CC 110 continues to monitor the traffic flows which remain on the vSwitch-based overlay (e.g., those for which CC 110 installed rules in the flow table 124 of pSwitch 120 as described in the first step). The CC 110 continues to monitor the traffic flows which remain on the vSwitch-based overlay since one or more of these flows may become large flows over time. For example, the CC 110 may continue to monitor traffic statistics of each of the traffic flows which remain on the vSwitch-based overlay. The CC 110, based on a determination that one of the traffic flows has become a large traffic flow, may perform migration of the large traffic flow from the vSwitch-based overlay onto the physical network portion of the SDN as described above.
It will be appreciated that, although primarily depicted and described with respect to specific numbers and arrangements of pSwitches 120, vSwitches 130, and servers 140, any other suitable numbers or arrangements of pSwitches 120, vSwitches 130, or servers 140 may be used. In at least some embodiments, CC 110 (or any other suitable controller or device) may be configured to instantiate and remove vSwitches 130 dynamically (e.g., responsive to user requests, responsive to detection that more or fewer vSwitches 130 are needed to handle current or expected load on the SDN, or in response to any other suitable types of trigger conditions). In at least some embodiments, CC 110 may be configured to monitor vSwitches 130 and to initiate mitigating actions responsive to a determination that one of the vSwitches 130 has failed. In at least some embodiments, for example, CC 110 may monitor the vSwitches 130 based on the exchange of flow statistics via control plane paths 111 between CC 110 and the vSwitches 130 (e.g., detecting improper functioning or failure of a given vSwitch 130 based on a determination that the given vSwitch 130 stops responding to flow statistics queries from CC 110). In at least some embodiments, for example, CC 110, responsive to a determination that a given vSwitch 130 is not functioning properly or has failed, may remove the given vSwitch 130 from the vSwitch-based overlay (which may include re-routing of traffic flows currently being routed via the given vSwitch 130) and adding a replacement vSwitch 130 into the vSwitch-based overlay (e.g., via establishment of L-tunnels 151, V-tunnels 152, and H-tunnels 153).
It will be appreciated that, although primarily depicted and described with respect to a communication system in which the SDN is based on OpenFlow, various embodiments depicted and described herein may be provided for communication systems in which the SDN is implemented using an implementation other than OpenFlow. Accordingly, various references herein to OpenFlow-specific terms (e.g., OFA, Packet-In, or the like) may be read more generally. For example, OFA may be referred to more generally as a control plane or control plane portion of a switch (e.g., pSwitch or vSwitch). Similarly, for example, a Packet-In message may be referred to more generally as a new flow request message. Various other more generalized terms may be determined from the descriptions or definitions of the more specific terms provided herein. For purposes of clarity in describing various functions supported by CC 110, pSwitch 120, and vSwitches 130, exemplary methods which may be supported by such elements within communication systems supporting OpenFlow or other various SDN implementations are depicted and described with respect to
Various embodiments of the capability for scaling of the SDN control plane capacity enable use of both the high control plane capacity of a large number of vSwitches and high data plane capacity of hardware-based pSwitches in order to increase the scalability and resiliency of the SDN. Various embodiments of the capability for scaling of the SDN control plane capacity enable significant scaling of the SDN control plane capacity without sacrificing advantages of SDNs (e.g., high visibility of the central controller, fine-grained flow control, and the like). Various embodiments of the capability for scaling of the SDN control plane capacity obviate the need to use pre-installed rules in an effort to limit reactive flows within the SDN. Various embodiments of the capability for scaling of the SDN control plane capacity obviate the need to modify the control functions of the switches (e.g., the OFAs of the switches in an OpenFlow-based SDN) in order to scale SDN control plane capacity (e.g., obviating the need to use more powerful CPUs for the control functions of the switches, obviating the need to modify the software stack used by the control functions of the switches, or the like), which is not economically desirable due to the fact that the peak flow rate is expected to be much larger (e.g., several orders of magnitude) than the average flow rate. It will be appreciated that various embodiments of the capability for scaling of SDN control plane capacity provide other advantages for SDNs.
The computer 900 includes a processor 902 (e.g., a central processing unit (CPU) and/or other suitable processor(s)) and a memory 904 (e.g., random access memory (RAM), read only memory (ROM), and the like).
The computer 900 also may include a cooperating module/process 905. The cooperating process 905 can be loaded into memory 904 and executed by the processor 902 to implement functions as discussed herein and, thus, cooperating process 905 (including associated data structures) can be stored on a computer readable storage medium, e.g., RAM memory, magnetic or optical drive or diskette, and the like.
The computer 900 also may include one or more input/output devices 906 (e.g., a user input device (such as a keyboard, a keypad, a mouse, and the like), a user output device (such as a display, a speaker, and the like), an input port, an output port, a receiver, a transmitter, one or more storage devices (e.g., a tape drive, a floppy drive, a hard disk drive, a compact disk drive, and the like), or the like, as well as various combinations thereof). It will be appreciated that computer 900 depicted in
It will be appreciated that the functions depicted and described herein may be implemented in software (e.g., via implementation of software on one or more processors, for executing on a general purpose computer (e.g., via execution by one or more processors) so as to implement a special purpose computer, and the like) and/or may be implemented in hardware (e.g., using a general purpose computer, one or more application specific integrated circuits (ASIC), and/or any other hardware equivalents).
It will be appreciated that some of the steps discussed herein as software methods may be implemented within hardware, for example, as circuitry that cooperates with the processor to perform various method steps. Portions of the functions/elements described herein may be implemented as a computer program product wherein computer instructions, when processed by a computer, adapt the operation of the computer such that the methods and/or techniques described herein are invoked or otherwise provided. Instructions for invoking the inventive methods may be stored in fixed or removable media, transmitted via a data stream in a broadcast or other signal bearing medium, and/or stored within a memory within a computing device operating according to the instructions.
It will be appreciated that the term “or” as used herein refers to a non-exclusive “or,” unless otherwise indicated (e.g., use of “or else” or “or in the alternative”).
It will be appreciated that, although various embodiments which incorporate the teachings presented herein have been shown and described in detail herein, those skilled in the art can readily devise many other varied embodiments that still incorporate these teachings.