1. Field
The disclosure herein generally relates to systems and methods for software-defined networks. In particular, systems and methods for protecting and tracking network state updates in a software-defined network from side-channel access are described.
2. Description of the Related Art
In a software-defined network (SDN) architecture, the control and data planes are decoupled, the network intelligence and state are logically centralized, and the underlying network infrastructure is set apart from the applications. As a result, enterprises and carriers can obtain programmability, automation, and network control. This enables them to build highly scalable, flexible networks that can readily adapt to changing business needs. A communication channel operates between the control and data planes of supported network devices.
With reference to
The communication channel 140 implements a protocol on both sides of the interface between the infrastructure component 130 and the controller component 110. An embodiment of a protocol is the OpenFlow protocol. However, other protocols can be implemented within the communication channel 140, such as the Forces Protocol (Forwarding and Control Element Separation Protocol) and the Secure Shell (SSH) Protocol. The protocol provides configuration and interoperability testing between network devices and control software from different vendors. The protocol integrates an enterprise or carrier's existing infrastructure and provides a simple migration path for those segments of the network that need SDN functionality. In an embodiment, the communication channel 140 is the Transmission Control Protocol (TCP), and the OpenFlow protocol runs on top of TCP. If SSH is used, then this also runs on top of TCP. However, other embodiments of the communication channel 140 are contemplated by embodiments of the invention.
The network state in each of the forwarding devices of the infrastructure component 130 is maintained in a flow table, such as the flow table 150 illustrated in
The counter field updates the counter information for associated counters for every packet that matches a particular flow. In the timeouts field, flows are evicted from the flow table, either by a control message update from the controller or by the flow expiry mechanism. Timeouts are used to determine when a flow is removed from the flow table. The cookie field contains additional information used by the controller to filter flow based information. The flow table 150 illustrated in
SDNs provide the architectural support to separate the control plane and data plane entities in different physical devices. Several applications compute the network state on top of the control plane and push forwarding entries into the data plane. The network operator and higher layer entities on top of the applications determine the network state by gathering the forwarding entry statistics from the switches in the data plane. However, certain short-comings or weaknesses can result.
Certain entities, such as a network administrator can login to a programmable switch directly and update the flow table state. This is referred to as a side-channel access because the controller plane is being diverted and/or not notified of the update to the flow table state. A side-channel access can be implemented via a Secure Shell protocol (SSH), as an example. An updated flow table state can include creating a new flow, reading the current flow table state, updating an existing flow, or deleting a flow (CRUD).
A side-channel access to update a flow table state can create security issues or misconfigurations. Using a side-channel access, authorized users can login to the forwarding device with required credentials. However, that user may not have access rights to modify the flows in the flow table state. Current mechanisms in programmable switches do not have any control to deny updating a particular flow. If no access right is defined, secure flows, such as a Firewall can be updated without any protections. Authorized users can also introduce misconfigurations, such as a faulty update to a certain security flow. When such an update occurs, the controller plane is oblivious of the change. Such updates could bring the switch state down.
In addition to the security issues and misconfigurations described above, current programmable switches do not provide complete tracking or notification features when any updates are made to the flow table state via a side-channel access. In some programmable interfaces, such as OpenFlow protocol, only flow remove actions are tracked. This is supported only when the controller plane sets a flag during the flow creation process to be notified of a flow remove event. If the controller plane doesn't set the flag, the controller plane is not notified of the update. Information about existing flows can be obtained by periodically sending a statistics request from the controller plane to a switch in the data plane. However, the controller plane may not be aware of new changes, such as a creation, update, or deletion made to the flow table, and therefore, may not request a statistics report.
According to an embodiment, a system includes an access controller component and a tracker component. The access controller component stores access control rights of a user to perform an action on a flow table of a programmable switch in a network, wherein the access control rights are determined by stored information that includes a predetermination association of a particular user and a permitted action that that the particular user is allowed to take with respect to the flow table. The tracker component permits the user to perform an action on the flow table according to a flow modification request received at the programmable switch, based upon the stored access control rights.
According to another embodiment, a method is implemented by a system in a network. The method includes receiving an indication of a flow modification request that is received at a programmable switch of the network; and determining whether a user is authorized and permitted to perform an action on a flow table of the programmable switch that is indicated in the flow modification request, based upon access control rights of a user to perform an action on a flow table of the programmable switch, wherein the access control rights are determined by stored information that includes a predetermination association of a particular user and a permitted action that that the particular user is allowed to take with respect to the flow table.
According to another embodiment, a non-transitory computer-readable medium that stores a program is provided, which when implemented by a computer, causes the computer to perform the above-described method.
A more complete appreciation of the invention and many of the attendant advantages thereof will be readily obtained as the same becomes better understood by reference to the following detailed description when considered in connection with the accompanying drawings, wherein:
Like reference numerals designate identical or corresponding parts throughout the several views.
Enabling secure access rights and tracking capabilities of a network state can help prevent erroneous, faulty updates and prevent violations. This is important in a SDN architecture where the control plane and data plane entities are physically separated.
An ACT and an associated bit-array based FRDS are located in each programmable switch. Each ACT and associated bit-array based FRDS have a synchronized ACT and associated bit-array based FRDS located in the controller plane. In the SDN 300 illustrated in
With reference back to
If the request is to delete, update, or read an existing flow in step 570, the ACT checks if the requested user is an authenticated entity from the ACT, and checks if the permission is set correctly for a delete, update, or read modification. If both checks are positive, the corresponding role-bit index value is checked for permission to access the flow in step 580. The flow is then sent to the flow table in step 560.
For a delete, update, or read modification in the embodiment described above, the controller plane is not notified of the modification. However, another embodiment includes notifying the controller for any of the four CRUD modifications. The notification to the controller plane for a delete, update, or read modification could occur after each modification, or after a certain period of time or a certain number of modifications. The controller plane could also be scheduled to request a report of the delete, update, and read modifications from each programmable switch.
If the flow modification in step 625 is not a create modification, i.e. is a read, update, or delete modification, the controller is notified of the modification in alternative step 645. Alternative step 645 is an optional step of notifying the controller, and could occur after each modification, or after a specified time or number of modifications, or the controller could be scheduled to request a report of the modifications. It is determined whether the role-bit index value of the user has permission to access the flow in step 650. If the user's role-bit index value does not have permission, the modification request is dropped in step 615. If the user's role-bit index value does have permission to access the flow, the flow is sent to the flow table in step 640.
Embodiments described herein provide notification capabilities that allow the programmable switches to notify the controller entity about flow updates or modifications. A notification component (“notifier”) 343 of the component 340 notifies, or causes the programmable switch to notify, the controller entity (controller component 310) of the SDN about a modification request to a flow received from an entity, other than the controller component 310. An embodiment includes receiving a modification request from a side-channel access. The notification to the controller includes, but is not limited to associated authorized login information of the user, the access time, associated access information, the set of flow updates (CRUD), and the flow count. This allows the controller entity to accept or reject the changes made by other users.
A notification message handshake can be utilized with the controller notifications described above. Both positive and negative acknowledgements to a flow modification are handled by the controller entity. Therefore, consistent updates to the network state are ensured in a SDN architecture. An example of a positive acknowledgement and a negative acknowledgement handshake are illustrated in
Next, a hardware description of a computing device, used in accordance with exemplary embodiments described herein is described with reference to
Further, the claimed advancements may be provided as a utility application, background daemon, or component of an operating system, or combination thereof, executing in conjunction with CPU 900 and an operating system such as Microsoft Windows 7, UNIX, Solaris, LINUX, Apple MAC-OS and other systems known to those skilled in the art.
CPU 900 may be a Xenon or Core processor from Intel of America or an Opteron processor from AMD of America, or may be other processor types or circuitry that would be recognized by one of ordinary skill in the art. Alternatively, the CPU 900 may be implemented on an FPGA, ASIC, PLD or using discrete logic circuits, as one of ordinary skill in the art would recognize. Further, CPU 900 may be implemented as multiple processors cooperatively working in parallel to perform the instructions of the inventive processes described above.
The computing device in
The computing device further includes a display controller 908, such as a NVIDIA GeForce GTX or Quadro graphics adaptor from NVIDIA Corporation of America for interfacing with display 910, such as a Hewlett Packard HPL2445w LCD monitor. A general purpose I/O interface 912 interfaces with a keyboard and/or mouse 914 as well as a touch screen panel 916 on or separate from display 910. General purpose I/O interface also connects to a variety of peripherals 918 including printers and scanners, such as an OfficeJet or DeskJet from Hewlett Packard.
A sound controller 920 is also provided in the computing device, such as Sound Blaster X-Fi Titanium from Creative, to interface with speakers/microphone 922 thereby providing sounds and/or music.
The general purpose storage controller 924 connects the storage medium disk 904 with communication bus 926, which may be an ISA, EISA, VESA, PCI, or similar, for interconnecting all of the components of the computing device. A description of the general features and functionality of the display 910, keyboard and/or mouse 914, as well as the display controller 908, storage controller 924, network controller 906, sound controller 920, and general purpose I/O interface 912 is omitted herein for brevity as these features are known.
Embodiments of the invention provide systems and methods of access control and tracking capabilities of programmable switches. When any entity other than the controller updates a flow table, embodiments described herein notify the controller about the changes and its associated user information. Any attempts to update non-permissible flow entries will result in triggers and notifications to the controller.
Numerous modifications and variations of the present invention are possible in light of the above teachings. It is therefore to be understood that within the scope of the appended claims, the invention may be practiced otherwise than as specifically described herein.